Spring Boot 通过Filter添加logback traceId
@Slf4j
@Component
public class TraceIdFilter extends OncePerRequestFilter implements Ordered {
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
@Override
protected void doFilterInternal(@Nonnull HttpServletRequest request,@Nonnull HttpServletResponse response,@Nonnull FilterChain filterChain) throws ServletException, IOException {
try {
String traceId = MDCUtils.getOrGenerateTraceId(request);
MDCUtils.setTraceId(traceId);
response.setHeader(MDCUtils.TRACE_ID_KEY, traceId);
} catch (Exception e) {
log.error("设置traceId出现异常", e);
}
filterChain.doFilter(request, response);
MDC.clear();
}
}
logback 配置点:
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [${log.serverName}-${log.env}][traceId-%X{traceId:-}][spanId-%X{spanId:-}] %-5level %logger{20} - %msg%n</pattern>
关键配置:[traceId-%X{traceId:-}]
http://blog.xqlee.com/article/2411271542374299.html