202107-01 SpringBoot+slf4j实现全链路调用日志跟踪的方法(一) SpringBoot中除了常见的分布式链路跟踪系统zipkin、skywalking等,如果需要快速定位一次请求的所有日志,那么该如何实现?实际slf4j提供了MDC(MappedDiagnosticContexts)功能,支持用户定义和修改日志的输出格式以及内容。本文将介绍Tracer集成的slf4jMDC功能,方便用户在只简单修改日志配置文件的前提下输出当前Tracer上下文TraceId。MDC介绍MDC(MappedDiagnosticContext,映射调试上下文)是log4j、logback及log4j... 继续阅读 >
202107-01 SpringBoot+slf4j线程池全链路调用日志跟踪问题及解决思路(二) 本项目源码已在多个项目中实践接着上一篇文章,项目中使用了线程池,那么子线程中日志就会丢失traceId,下面讲解如何实现子线程中的traceId日志跟踪。解决思路子线程在打印日志的过程中traceId将丢失,解决方式为重写线程池,将主线程的traceId继续传递到子线程中。当然,对于直接new创建线程的情况不考略【实际应用中应该避免这种用法】。继承ThreadPoolExecutor,重写执行任务的方法publicfinalclassOverrideThreadPoolExecut... 继续阅读 >