refactor: 适配 ContiNew Starter 日志调整

This commit is contained in:
Charles7c 2023-12-23 22:49:18 +08:00
parent 4c24aea560
commit 5a767c959a
10 changed files with 31 additions and 26 deletions

View File

@ -16,7 +16,6 @@
package top.charles7c.continew.admin.monitor.config; package top.charles7c.continew.admin.monitor.config;
import java.net.URI;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.List; import java.util.List;
@ -74,12 +73,8 @@ public class LogDaoLocalImpl implements LogDao {
// 请求信息 // 请求信息
LogRequest logRequest = logRecord.getRequest(); LogRequest logRequest = logRecord.getRequest();
logDO.setRequestMethod(logRequest.getMethod()); logDO.setRequestMethod(logRequest.getMethod());
// 仅记录/xxx?xx=xx&xx=xx String requestUri = logRequest.getUri().toString();
URI requestUri = logRequest.getUri(); logDO.setRequestUri(requestUri);
String requestQuery = requestUri.getQuery();
String requestUrl = StrUtil.isNotBlank(requestQuery)
? requestUri.getPath() + StringConstants.QUESTION_MARK + requestQuery : requestUri.getPath();
logDO.setRequestUrl(requestUrl);
Map<String, List<String>> requestHeaders = logRequest.getHeaders(); Map<String, List<String>> requestHeaders = logRequest.getHeaders();
logDO.setRequestHeaders(JSONUtil.toJsonStr(requestHeaders)); logDO.setRequestHeaders(JSONUtil.toJsonStr(requestHeaders));
String requestBody = logRequest.getBody(); String requestBody = logRequest.getBody();
@ -104,17 +99,17 @@ public class LogDaoLocalImpl implements LogDao {
logDO.setErrorMsg(result.getMsg()); logDO.setErrorMsg(result.getMsg());
} }
// 操作人 // 操作人
if (requestUrl.startsWith(SysConstants.LOGOUT_URI)) { if (requestUri.startsWith(SysConstants.LOGOUT_URI)) {
Long loginId = Convert.toLong(result.getData(), -1L); Long loginId = Convert.toLong(result.getData(), -1L);
logDO.setCreateUser(-1 != loginId ? loginId : null); logDO.setCreateUser(-1 != loginId ? loginId : null);
} else if (result.isSuccess() && requestUrl.startsWith(SysConstants.LOGIN_URI)) { } else if (result.isSuccess() && requestUri.startsWith(SysConstants.LOGIN_URI)) {
AccountLoginReq loginReq = JSONUtil.toBean(requestBody, AccountLoginReq.class); AccountLoginReq loginReq = JSONUtil.toBean(requestBody, AccountLoginReq.class);
logDO.setCreateUser( logDO.setCreateUser(
ExceptionUtils.exToNull(() -> userService.getByUsername(loginReq.getUsername()).getId())); ExceptionUtils.exToNull(() -> userService.getByUsername(loginReq.getUsername()).getId()));
} }
} }
// 操作人 // 操作人
if (!requestUrl.startsWith(SysConstants.LOGOUT_URI) && MapUtil.isNotEmpty(requestHeaders) if (!requestUri.startsWith(SysConstants.LOGOUT_URI) && MapUtil.isNotEmpty(requestHeaders)
&& requestHeaders.containsKey(HttpHeaders.AUTHORIZATION)) { && requestHeaders.containsKey(HttpHeaders.AUTHORIZATION)) {
String authorization = requestHeaders.get(HttpHeaders.AUTHORIZATION).get(0); String authorization = requestHeaders.get(HttpHeaders.AUTHORIZATION).get(0);
String token = authorization.replace(SaManager.getConfig().getTokenPrefix() + StringConstants.SPACE, String token = authorization.replace(SaManager.getConfig().getTokenPrefix() + StringConstants.SPACE,

View File

@ -57,9 +57,9 @@ public class LogDO implements Serializable {
private String module; private String module;
/** /**
* 请求URL * 请求 URI
*/ */
private String requestUrl; private String requestUri;
/** /**
* 请求方式 * 请求方式

View File

@ -48,10 +48,10 @@ public class SystemLogDetailResp extends LogResp {
private String requestMethod; private String requestMethod;
/** /**
* 请求 URL * 请求 URI
*/ */
@Schema(description = "请求 URL", example = "/system/dept") @Schema(description = "请求 URI", example = "/system/dept")
private String requestUrl; private String requestUri;
/** /**
* 请求头 * 请求头

View File

@ -48,10 +48,10 @@ public class SystemLogResp extends LogResp {
private String requestMethod; private String requestMethod;
/** /**
* 请求 URL * 请求 URI
*/ */
@Schema(description = "请求 URL", example = "/system/dept") @Schema(description = "请求 URI", example = "/system/dept")
private String requestUrl; private String requestUri;
/** /**
* IP * IP

View File

@ -30,7 +30,7 @@ export interface OperationLogRecord extends LogRecord {
export interface SystemLogRecord extends LogRecord { export interface SystemLogRecord extends LogRecord {
statusCode: number; statusCode: number;
requestMethod: string; requestMethod: string;
requestUrl: string; requestUri: string;
timeTaken: number; timeTaken: number;
} }

View File

@ -67,8 +67,8 @@
/> />
<a-table-column title="请求 URI"> <a-table-column title="请求 URI">
<template #cell="{ record }"> <template #cell="{ record }">
<span :title="decodeURIComponent(record.requestUrl)">{{ <span :title="decodeURIComponent(record.requestUri)">{{
record.requestUrl.match(/([^#|\?|\n]*)(\?.*)?/)[1] record.requestUri.match(/([^#|\?|\n]*)(\?.*)?/)[1]
}}</span> }}</span>
</template> </template>
</a-table-column> </a-table-column>
@ -187,11 +187,11 @@
</a-skeleton> </a-skeleton>
<span v-else>{{ systemLog.requestMethod }}</span> <span v-else>{{ systemLog.requestMethod }}</span>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="请求 URL" :span="2"> <a-descriptions-item label="请求 URI" :span="2">
<a-skeleton v-if="loading" :animation="true"> <a-skeleton v-if="loading" :animation="true">
<a-skeleton-line :rows="1" /> <a-skeleton-line :rows="1" />
</a-skeleton> </a-skeleton>
<span v-else>{{ systemLog.requestUrl }}</span> <span v-else>{{ systemLog.requestUri }}</span>
</a-descriptions-item> </a-descriptions-item>
<a-descriptions-item label="响应体" :span="2"> <a-descriptions-item label="响应体" :span="2">
<a-skeleton v-if="loading" :animation="true"> <a-skeleton v-if="loading" :animation="true">
@ -271,7 +271,7 @@
const systemLogList = ref<SystemLogRecord[]>([]); const systemLogList = ref<SystemLogRecord[]>([]);
const systemLog = ref<SystemLogDetailRecord>({ const systemLog = ref<SystemLogDetailRecord>({
requestUrl: '', requestUri: '',
requestMethod: '', requestMethod: '',
requestHeaders: '', requestHeaders: '',
requestBody: '', requestBody: '',

View File

@ -3,6 +3,11 @@ project:
# URL # URL
url: http://localhost:5173 url: http://localhost:5173
--- ### 日志配置
continew-starter.log:
# 是否打印日志,开启后可打印访问日志(类似于 Nginx access log
is-print: true
--- ### 服务器配置 --- ### 服务器配置
server: server:
# HTTP 端口(默认 8080 # HTTP 端口(默认 8080

View File

@ -5,6 +5,11 @@ project:
# 是否为生产环境 # 是否为生产环境
production: true production: true
--- ### 日志配置
continew-starter.log:
# 是否打印日志,开启后可打印访问日志(类似于 Nginx access log
is-print: false
--- ### 服务器配置 --- ### 服务器配置
server: server:
# HTTP 端口(默认 8080 # HTTP 端口(默认 8080

View File

@ -28,6 +28,7 @@ logging:
## 日志配置 ## 日志配置
continew-starter.log: continew-starter.log:
enabled: true enabled: true
# 包含信息
include: include:
- DESCRIPTION - DESCRIPTION
- MODULE - MODULE
@ -38,7 +39,6 @@ continew-starter.log:
- OS - OS
- RESPONSE_HEADERS - RESPONSE_HEADERS
- RESPONSE_BODY - RESPONSE_BODY
- TIME_TAKEN
--- ### 接口文档配置 --- ### 接口文档配置
springdoc: springdoc:

View File

@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `sys_log` (
`id` bigint(20) AUTO_INCREMENT COMMENT 'ID', `id` bigint(20) AUTO_INCREMENT COMMENT 'ID',
`description` varchar(255) NOT NULL COMMENT '日志描述', `description` varchar(255) NOT NULL COMMENT '日志描述',
`module` varchar(50) NOT NULL COMMENT '所属模块', `module` varchar(50) NOT NULL COMMENT '所属模块',
`request_url` varchar(512) NOT NULL COMMENT '请求URL', `request_uri` varchar(512) NOT NULL COMMENT '请求URI',
`request_method` varchar(10) NOT NULL COMMENT '请求方式', `request_method` varchar(10) NOT NULL COMMENT '请求方式',
`request_headers` text DEFAULT NULL COMMENT '请求头', `request_headers` text DEFAULT NULL COMMENT '请求头',
`request_body` text DEFAULT NULL COMMENT '请求体', `request_body` text DEFAULT NULL COMMENT '请求体',