TraceID
分布式产品查日志太麻烦,多台机器之间查来查去,还不知道是不是同一个请求的。打印日志时使用 MDC 在日志上添加一个 TraceID,标示一次调用的上下文ID,通过此ID可以获悉你所做事情的足迹链。
MDC
MDC(Mapped Diagnostic Context)是一个映射,用于存储运行上下文的特定线程的上下文数据。因此,如果使用log4j进行日志记录,则每个线程都可以拥有自己的MDC,该MDC对整个线程是全局的。属于该线程的任何代码都可以轻松访问线程的MDC中存在的值。
ThreadLocal
Threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据,Threadlocal提供了线程局部变量。这些变量不同于它们的普通对应物,因为访问一个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的私有静态字段,它们希望将状态与某一个线程相关联。
日志溯源
通过TraceID和ThreadLocal结合,可以根据TraceID溯源某次访问的完整访问路径,方便故障定位和业务逻辑梳理。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221047.html原文链接:https://javaforall.net
