mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 10:57:10 +08:00 
			
		
		
		
	feat: 系统日志新增 traceId 链路号记录,方便查看完整日志链路
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -68,4 +68,9 @@ public class SysConstants {
 | 
			
		||||
     * 描述类字段后缀
 | 
			
		||||
     */
 | 
			
		||||
    public static final String DESCRIPTION_FIELD_SUFFIX = "String";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Trace ID
 | 
			
		||||
     */
 | 
			
		||||
    public static final String TRACE_ID = "traceId";
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
        // 状态
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 日志描述
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 创建时间
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 状态码
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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`;
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
-- liquibase formatted sql
 | 
			
		||||
@@ -0,0 +1 @@
 | 
			
		||||
-- liquibase formatted sql
 | 
			
		||||
		Reference in New Issue
	
	Block a user