MDC简介
MDC[http://logback.qos.ch/manual/mdc.html]是为每个线程建立一个独立的存储空间,开发人员可以根据需要把信息存入其中。MDC使用Map机制来存储信息,信息以key/value对的形式存储在Map中。
使用Servlet Filter在接收到请求时,生成UUID填充MDC。在log4j的配置中就可以使用%X{key}打印MDC中的内容,从而识别出同一次请求中的log。
以下是一个简单的MDCFilter实现示例,在MDC中填充了UUID、主机IP和主机名。UUID用于标记同一次请求中的log,主机IP和主机名方便异常发生时到相应机器上检查log。
log4j 1.x中MDCFilter实现
//MDC填充的KEY
public static final String REQUEST_UUID = "REQUEST_UUID";
public static final String HOST_IP = "HOST_IP";
public