MDC介绍
在比较复杂的应用中,一个请求需要走很多个方法的处理,怎么样才能快速查找一个请求的全部日志呢。在分布式系统中,我们可以用链路追踪,比如zipkin、skywalking去快速查找日志,从而定位问题。在比较复杂的单体管理系统中,我们可以使用slf4j的MDC去实现类似的功能。
MDC ( Mapped Diagnostic Contexts ),是为了便于我们诊断线上问题而出现的方法工具类。使用ThreadLocal实现的,在MDC中的变量,每个线程都会有单独的副本,多线程不会相互干扰。MDC功能,logback 和 log4j 提供了支持。在Matrix-Web中,使用logback和slf4j进行日志的答应。
MDC原理
MDC类是一个静态工具类,对外提供了类似Map的接口:
public class MDC {
// 清空 map 所有的条目。
public static void clear();
// 根据 key 值返回相应的对象
public static object get(String key);
// 返回所有的 key 值 .
public static Enumeration getKeys();
// 把 key 值和关联的对象,插入 map 中
public static void put(String key, Obje