使用Traceld实现系统请求跟踪

1、建立一个过滤器,在过滤器中给线程设置TraceId
2、将日志的配置文件进行修改,把TraceId打印到日志中

@Order(1)
@WebFilter(urlPatterns = "/*")
public class TraceldFilter implements Filter{
    private static final String TRACE_ID="traceId";
    
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // 给每一个线程分配一个traceId
        String traceId=request.getParameter(TRACE_ID);
        if(StringUtils.isBlank(traceId)) {
            traceId=UUID.randomUUID().toString();
        }
        MDC.put(TRACE_ID, traceId);
        chain.doFilter(request, response);
    }
}

application.properties

logging.pattern.console= %d [%thread] %-5p [%c] [%F:%L][traceId:%clr(%X{traceId})] - %msg%n
@SpringBootApplication
@ServletComponentScan
public class AllLearningApplication {

    public static void main(String[] args) {
        SpringApplication.run(AllLearningApplication.class, args);
    }

}

这个方案还是比较简陋的,有时间再看看好的方案

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容