diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java index fb27eaaf..a07cd249 100644 --- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TLogServletFilter.java @@ -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 { diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java index 603215da..c576eb7a 100644 --- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/tlog/TraceIdGenerator.java @@ -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()); } } \ No newline at end of file diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java index 310e1083..0bac4ba1 100644 --- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/constant/SysConstants.java @@ -68,4 +68,9 @@ public class SysConstants { * 描述类字段后缀 */ public static final String DESCRIPTION_FIELD_SUFFIX = "String"; + + /** + * Trace ID + */ + public static final String TRACE_ID = "traceId"; } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java index a5fcc61e..fe93f8f5 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/config/LogDaoLocalImpl.java @@ -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 responseHeaders = logResponse.getHeaders(); + logDO.setResponseHeaders(JSONUtil.toJsonStr(responseHeaders)); + logDO.setTraceId(responseHeaders.get(SysConstants.TRACE_ID)); String responseBody = logResponse.getBody(); logDO.setResponseBody(responseBody); // 状态 diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/entity/LogDO.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/entity/LogDO.java index 8d911869..f92d478b 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/entity/LogDO.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/entity/LogDO.java @@ -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; + /** * 日志描述 */ diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/query/SystemLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/query/SystemLogQuery.java index 3be705fb..cfaca22d 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/query/SystemLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/query/SystemLogQuery.java @@ -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; + /** * 创建时间 */ diff --git a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/SystemLogDetailResp.java b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/SystemLogDetailResp.java index 05160e26..989ef2cc 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/SystemLogDetailResp.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/continew/admin/monitor/model/resp/SystemLogDetailResp.java @@ -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; + /** * 状态码 */ diff --git a/continew-admin-webapi/src/main/resources/db/changelog/db.changelog-master.yaml b/continew-admin-webapi/src/main/resources/db/changelog/db.changelog-master.yaml index 0cae68e8..373aaaf7 100644 --- a/continew-admin-webapi/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/continew-admin-webapi/src/main/resources/db/changelog/db.changelog-master.yaml @@ -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 \ No newline at end of file + 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 \ No newline at end of file diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_column.sql b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_column.sql new file mode 100644 index 00000000..3193ccf0 --- /dev/null +++ b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_column.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`; \ No newline at end of file diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_data.sql b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_data.sql new file mode 100644 index 00000000..3d8508eb --- /dev/null +++ b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_data.sql @@ -0,0 +1 @@ +-- liquibase formatted sql diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_table.sql new file mode 100644 index 00000000..3d8508eb --- /dev/null +++ b/continew-admin-webapi/src/main/resources/db/changelog/v2.4.0/continew-admin_table.sql @@ -0,0 +1 @@ +-- liquibase formatted sql