加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.com.cn/)- 数据开发、人脸识别、智能机器人、图像处理、语音技术!
当前位置: 首页 > 站长资讯 > 动态 > 正文

如何实现日志链路跟踪?

发布时间:2021-02-23 14:38:56 所属栏目:动态 来源:互联网
导读:我们可以把每个请求弄一个唯一标识,然后我们可以在日志打印的时候代上每个请求都使用一个唯一标识,而且那个唯一标识需要传递给下游服务,下游服务打印日志的时候也带上这个唯一标识,这样就很好的追踪全部的链路显示在日志中。 那技术实现方案是什么呢?我

我们可以把每个请求弄一个唯一标识,然后我们可以在日志打印的时候代上每个请求都使用一个唯一标识,而且那个唯一标识需要传递给下游服务,下游服务打印日志的时候也带上这个唯一标识,这样就很好的追踪全部的链路显示在日志中。

那技术实现方案是什么呢?我们应该尽可能的对代码无入侵,使用Logback的MDC机制日志模板中加入traceId标识,取值方式为%X{traceId}。

什么是MDC

MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map,可以往其中添加键值对。

MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据。

方案实现

由于MDC内部使用的是ThreadLocal所以只有本线程才有效,子线程和下游的服务MDC里的值会丢失;所以方案主要的难点是解决值的传递问题,主要包括以几下部分:


(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读