mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 10:57:13 +08:00 
			
		
		
		
	feat: 系统日志新增 traceId 链路号记录,方便查看完整日志链路
This commit is contained in:
		| @@ -16,12 +16,12 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.common.config.tlog; | package top.charles7c.continew.admin.common.config.tlog; | ||||||
|  |  | ||||||
| import com.yomahub.tlog.constant.TLogConstants; |  | ||||||
| import com.yomahub.tlog.context.TLogContext; | import com.yomahub.tlog.context.TLogContext; | ||||||
| import jakarta.servlet.*; | import jakarta.servlet.*; | ||||||
| import jakarta.servlet.http.HttpServletRequest; | import jakarta.servlet.http.HttpServletRequest; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||||
|  | import top.charles7c.continew.admin.common.constant.SysConstants; | ||||||
|  |  | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  |  | ||||||
| @@ -47,7 +47,7 @@ public class TLogServletFilter implements Filter { | |||||||
|             try { |             try { | ||||||
|                 TLogWebCommon.loadInstance().preHandle(httpServletRequest); |                 TLogWebCommon.loadInstance().preHandle(httpServletRequest); | ||||||
|                 // 把 traceId 放入 response 的 header,为了方便有些人有这样的需求,从前端拿整条链路的 traceId |                 // 把 traceId 放入 response 的 header,为了方便有些人有这样的需求,从前端拿整条链路的 traceId | ||||||
|                 httpServletResponse.addHeader(TLogConstants.TLOG_TRACE_KEY, TLogContext.getTraceId()); |                 httpServletResponse.addHeader(SysConstants.TRACE_ID, TLogContext.getTraceId()); | ||||||
|                 chain.doFilter(request, response); |                 chain.doFilter(request, response); | ||||||
|                 return; |                 return; | ||||||
|             } finally { |             } finally { | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ | |||||||
| package top.charles7c.continew.admin.common.config.tlog; | package top.charles7c.continew.admin.common.config.tlog; | ||||||
|  |  | ||||||
| import com.yomahub.tlog.id.TLogIdGenerator; | import com.yomahub.tlog.id.TLogIdGenerator; | ||||||
|  | import com.yomahub.tlog.id.snowflake.UniqueIdGenerator; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * TLog ID 自定义生成器 |  * TLog ID 自定义生成器 | ||||||
| @@ -28,6 +29,6 @@ import com.yomahub.tlog.id.TLogIdGenerator; | |||||||
| public class TraceIdGenerator extends TLogIdGenerator { | public class TraceIdGenerator extends TLogIdGenerator { | ||||||
|     @Override |     @Override | ||||||
|     public String generateTraceId() { |     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"; |     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.monitor.model.entity.LogDO; | ||||||
| import top.charles7c.continew.admin.system.service.UserService; | import top.charles7c.continew.admin.system.service.UserService; | ||||||
| import top.charles7c.continew.starter.core.constant.StringConstants; | 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.core.util.ExceptionUtils; | ||||||
| import top.charles7c.continew.starter.log.common.dao.LogDao; | 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.LogRecord; | ||||||
| import top.charles7c.continew.starter.log.common.model.LogRequest; | import top.charles7c.continew.starter.log.common.model.LogRequest; | ||||||
| import top.charles7c.continew.starter.log.common.model.LogResponse; | import top.charles7c.continew.starter.log.common.model.LogResponse; | ||||||
|  | import top.charles7c.continew.starter.web.model.R; | ||||||
|  |  | ||||||
| import java.net.URI; | import java.net.URI; | ||||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||||
| @@ -86,7 +86,9 @@ public class LogDaoLocalImpl implements LogDao { | |||||||
|         LogResponse logResponse = logRecord.getResponse(); |         LogResponse logResponse = logRecord.getResponse(); | ||||||
|         Integer statusCode = logResponse.getStatus(); |         Integer statusCode = logResponse.getStatus(); | ||||||
|         logDO.setStatusCode(statusCode); |         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(); |         String responseBody = logResponse.getBody(); | ||||||
|         logDO.setResponseBody(responseBody); |         logDO.setResponseBody(responseBody); | ||||||
|         // 状态 |         // 状态 | ||||||
|   | |||||||
| @@ -16,17 +16,15 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.monitor.model.entity; | 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.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.time.LocalDateTime; | 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 |     @TableId | ||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 链路 ID | ||||||
|  |      */ | ||||||
|  |     private String traceId; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 日志描述 |      * 日志描述 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -16,22 +16,18 @@ | |||||||
|  |  | ||||||
| package top.charles7c.continew.admin.monitor.model.query; | 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.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.List; | 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 |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     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; | package top.charles7c.continew.admin.monitor.model.resp; | ||||||
|  |  | ||||||
| import java.io.Serial; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import lombok.Data; | 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 |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 链路 ID | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "链路 ID", example = "904846526308876288") | ||||||
|  |     private String traceId; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 状态码 |      * 状态码 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -29,3 +29,9 @@ databaseChangeLog: | |||||||
|       file: db/changelog/v2.2.0/continew-admin_column.sql |       file: db/changelog/v2.2.0/continew-admin_column.sql | ||||||
|   - include: |   - 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