diff --git a/script/src/main/java/com/xiang/xservice/config/TraceIdFilter.java b/script/src/main/java/com/xiang/xservice/config/TraceIdFilter.java new file mode 100644 index 0000000..f386043 --- /dev/null +++ b/script/src/main/java/com/xiang/xservice/config/TraceIdFilter.java @@ -0,0 +1,36 @@ +package com.xiang.xservice.config; + +import org.apache.log4j.MDC; +import org.springframework.stereotype.Component; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.UUID; + +/** + * @Author: xiang + * @Date: 2025-11-12 17:03 + */ +@Component +public class TraceIdFilter implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + try { + // 从请求头中获取 traceId,如果没有则新建一个 + String traceId = ((HttpServletRequest) request).getHeader("traceId"); + if (traceId == null || traceId.isEmpty()) { + traceId = UUID.randomUUID().toString().replace("-", ""); + } + + MDC.put("traceId", traceId); + chain.doFilter(request, response); + } finally { + MDC.remove("traceId"); + } + } +} diff --git a/script/src/main/resources/logback-spring.xml b/script/src/main/resources/logback-spring.xml index d7691b2..661bc01 100644 --- a/script/src/main/resources/logback-spring.xml +++ b/script/src/main/resources/logback-spring.xml @@ -17,7 +17,7 @@ - %boldGreen(%contextName): %boldCyan(%d{yyyy-MM-dd HH:mm:ss:SSS}) %highlight([%c]) %boldMagenta([%t]) %boldCyan([%L]) %highlight([traceId:%X{traceId:-}) %boldGreen([%p]) - %msg%n + %boldGreen(%contextName): %boldCyan(%d{yyyy-MM-dd HH:mm:ss:SSS}) %highlight([%c]) %boldMagenta([%t]) %boldCyan([%L]) %highlight([traceId:%X{traceId:-})] %boldGreen([%p]) - %msg%n UTF-8