2 Commits

3 changed files with 49 additions and 2 deletions
Unified View
  1. +47
    -0
      src/main/java/com/inspect/nvr/config/TraceIdFilter.java
  2. +1
    -1
      src/main/resources/logback-spring.xml
  3. +1
    -1
      src/main/resources/logback.xml

+ 47
- 0
src/main/java/com/inspect/nvr/config/TraceIdFilter.java View File

@ -0,0 +1,47 @@
package com.inspect.nvr.config;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.UUID;
/**
* 用于在每个请求中生成或传递traceId方便日志追踪
*/
@Component
public class TraceIdFilter extends OncePerRequestFilter {
private static final String TRACE_ID_HEADER = "X-Trace-Id"; // 可从 header 传入支持链路传递
private static final String MDC_KEY = "traceId";
@Override
public void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
try {
// 1.优先从请求头中获取traceId
String traceId = request.getHeader(TRACE_ID_HEADER);
// 2.若请求头中没有traceId则生成新的traceId
if (traceId == null || traceId.isEmpty()) {
traceId = generateTraceId();
}
// 3.将traceId放入MDC中
MDC.put(MDC_KEY, traceId);
// 4.可响应 header 给下游
response.setHeader(TRACE_ID_HEADER, traceId);
// 5.继续处理请求
filterChain.doFilter(request, response);
} finally {
// 6.处理完成清除MDC中的traceId避免线程复用污染
MDC.clear();
}
}
private String generateTraceId() {
return UUID.randomUUID().toString().replace("-", "");
}
}

+ 1
- 1
src/main/resources/logback-spring.xml View File

@ -9,7 +9,7 @@
<!-- 控制台输出 --> <!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8"> <encoder charset="UTF-8">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%X{traceId}] %logger{80} - %msg%n</pattern>
</encoder> </encoder>
</appender> </appender>


+ 1
- 1
src/main/resources/logback.xml View File

@ -3,7 +3,7 @@
<!-- 日志存放路径 --> <!-- 日志存放路径 -->
<property name="log.path" value="logs/inspect-nvr" /> <property name="log.path" value="logs/inspect-nvr" />
<!-- 日志输出格式 --> <!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level [%X{traceId}] %logger{20} - [%method,%line] - %msg%n" />
<property name="log.maxHistory" value="60"/> <property name="log.maxHistory" value="60"/>


Loading…
Cancel
Save