技术分享-日志链路追踪

原文约9400字,阅读约需23分钟。发表于:

在技术运维过程中,很难从某服务庞杂的日志中,单独找寻出某次API调用的全部日志。为提高排查问题的效率,在多个系统及应用内根据 统一的TraceId 查找同一次请求链路上的日志,根据日志快速定位问题,同时需对业务代码无侵入,特别是在高频请求下,也可以方便的搜索此次请求的日志内容。

在技术运维过程中,使用MDC实现日志链路跟踪,通过统一的TraceId查找同一次请求链路上的日志,提高排查问题的效率。使用MDC的好处是可以在用户调用请求时将traceId返回,实现全链路追踪。可以通过拦截器和HttpUtils将traceId传递到下一个服务。在多线程中使用MDC需要使用getCopyOfContextMap方法传递值。还可以对Spring的异步线程池进行改造,使用自定义的MdcTaskDecorator和MDCLogThreadPoolExecutor来实现线程池配置。可以将MDC应用于JSF接口和接口返回值,实现调用链的追踪。

相关推荐 去reddit讨论