feat: 系统日志新增 traceId 链路号记录,方便查看完整日志链路

This commit is contained in:
Charles7c 2024-01-31 21:49:56 +08:00
parent b5d668e014
commit 860ca403c2
11 changed files with 57 additions and 27 deletions

View File

@ -16,12 +16,12 @@
package top.charles7c.continew.admin.common.config.tlog;
import com.yomahub.tlog.constant.TLogConstants;
import com.yomahub.tlog.context.TLogContext;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import top.charles7c.continew.admin.common.constant.SysConstants;
import java.io.IOException;
@ -47,7 +47,7 @@ public class TLogServletFilter implements Filter {
try {
TLogWebCommon.loadInstance().preHandle(httpServletRequest);
// traceId 放入 response header为了方便有些人有这样的需求从前端拿整条链路的 traceId
httpServletResponse.addHeader(TLogConstants.TLOG_TRACE_KEY, TLogContext.getTraceId());
httpServletResponse.addHeader(SysConstants.TRACE_ID, TLogContext.getTraceId());
chain.doFilter(request, response);
return;
} finally {

View File

@ -17,6 +17,7 @@
package top.charles7c.continew.admin.common.config.tlog;
import com.yomahub.tlog.id.TLogIdGenerator;
import com.yomahub.tlog.id.snowflake.UniqueIdGenerator;
/**
* TLog ID 自定义生成器
@ -28,6 +29,6 @@ import com.yomahub.tlog.id.TLogIdGenerator;
public class TraceIdGenerator extends TLogIdGenerator {
@Override
public String generateTraceId() {
return String.valueOf(System.nanoTime());
return String.valueOf(UniqueIdGenerator.generateId());
}
}

View File

@ -68,4 +68,9 @@ public class SysConstants {
* 描述类字段后缀
*/
public static final String DESCRIPTION_FIELD_SUFFIX = "String";
/**
* Trace ID
*/
public static final String TRACE_ID = "traceId";
}

View File

@ -33,12 +33,12 @@ import top.charles7c.continew.admin.monitor.mapper.LogMapper;
import top.charles7c.continew.admin.monitor.model.entity.LogDO;
import top.charles7c.continew.admin.system.service.UserService;
import top.charles7c.continew.starter.core.constant.StringConstants;
import top.charles7c.continew.starter.web.model.R;
import top.charles7c.continew.starter.core.util.ExceptionUtils;
import top.charles7c.continew.starter.log.common.dao.LogDao;
import top.charles7c.continew.starter.log.common.model.LogRecord;
import top.charles7c.continew.starter.log.common.model.LogRequest;
import top.charles7c.continew.starter.log.common.model.LogResponse;
import top.charles7c.continew.starter.web.model.R;
import java.net.URI;
import java.time.LocalDateTime;
@ -86,7 +86,9 @@ public class LogDaoLocalImpl implements LogDao {
LogResponse logResponse = logRecord.getResponse();
Integer statusCode = logResponse.getStatus();
logDO.setStatusCode(statusCode);
logDO.setResponseHeaders(JSONUtil.toJsonStr(logResponse.getHeaders()));
Map<String, String> responseHeaders = logResponse.getHeaders();
logDO.setResponseHeaders(JSONUtil.toJsonStr(responseHeaders));
logDO.setTraceId(responseHeaders.get(SysConstants.TRACE_ID));
String responseBody = logResponse.getBody();
logDO.setResponseBody(responseBody);
// 状态

View File

@ -16,17 +16,15 @@
package top.charles7c.continew.admin.monitor.model.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import top.charles7c.continew.admin.monitor.enums.LogStatusEnum;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import top.charles7c.continew.admin.monitor.enums.LogStatusEnum;
/**
* 系统日志实体
*
@ -46,6 +44,11 @@ public class LogDO implements Serializable {
@TableId
private Long id;
/**
* 链路 ID
*/
private String traceId;
/**
* 日志描述
*/

View File

@ -16,22 +16,18 @@
package top.charles7c.continew.admin.monitor.model.query;
import cn.hutool.core.date.DatePattern;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import top.charles7c.continew.starter.data.mybatis.plus.query.Query;
import top.charles7c.continew.starter.data.mybatis.plus.query.QueryType;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.format.annotation.DateTimeFormat;
import cn.hutool.core.date.DatePattern;
import top.charles7c.continew.starter.data.mybatis.plus.query.Query;
import top.charles7c.continew.starter.data.mybatis.plus.query.QueryType;
/**
* 系统日志查询条件
*
@ -45,6 +41,12 @@ public class SystemLogQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 链路 ID
*/
@Schema(description = "链路 ID", example = "904846526308876288")
private String traceId;
/**
* 创建时间
*/

View File

@ -16,11 +16,10 @@
package top.charles7c.continew.admin.monitor.model.resp;
import java.io.Serial;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serial;
/**
* 系统日志详情信息
@ -35,6 +34,12 @@ public class SystemLogDetailResp extends LogResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 链路 ID
*/
@Schema(description = "链路 ID", example = "904846526308876288")
private String traceId;
/**
* 状态码
*/

View File

@ -28,4 +28,10 @@ databaseChangeLog:
- include:
file: db/changelog/v2.2.0/continew-admin_column.sql
- include:
file: db/changelog/v2.2.0/continew-admin_data.sql
file: db/changelog/v2.2.0/continew-admin_data.sql
- include:
file: db/changelog/v2.4.0/continew-admin_table.sql
- include:
file: db/changelog/v2.4.0/continew-admin_column.sql
- include:
file: db/changelog/v2.4.0/continew-admin_data.sql

View File

@ -0,0 +1,4 @@
-- liquibase formatted sql
-- changeset Charles7c:1
ALTER TABLE `sys_log` ADD COLUMN `trace_id` varchar(255) NULL COMMENT '链路ID' AFTER `id`;

View File

@ -0,0 +1 @@
-- liquibase formatted sql

View File

@ -0,0 +1 @@
-- liquibase formatted sql