Browse Source

feat: 日志增traceId,追踪接口调用链路

master
yinhuaiwei 2 months ago
parent
commit
d83db1ef44
3 changed files with 44 additions and 2 deletions
  1. +42
    -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

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

@ -0,0 +1,42 @@
package com.inspect.nvr.config;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.UUID;
/**
* 用于在每个请求中生成或传递traceId方便日志追踪
*/
@Component
public class TraceIdFilter implements Filter {
private static final String TRACE_ID = "traceId";
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
// 1.优先从请求头中获取traceId
String traceId = httpServletRequest.getHeader(TRACE_ID);
// 2.若请求头中没有traceId则生成新的traceId
if (traceId == null || traceId.isEmpty()) {
traceId = generateTraceId();
}
try {
// 3.将traceId放入MDC中
MDC.put(TRACE_ID, traceId);
// 4.继续处理请求
filterChain.doFilter(servletRequest, servletResponse);
} finally {
// 5.处理完成清除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