MDC入门

sdaq 2016-08-04

1.MDC是什么

先来一段原版注释

引用
/**

*Thisclasshidesandservesasasubstitutefortheunderlyinglogging

*system'sMDCimplementation.

*

*<p>

*IftheunderlyingloggingsystemoffersMDCfunctionality,thenSLF4J'sMDC,

*i.e.thisclass,willdelegatetotheunderlyingsystem'sMDC.Notethatat

*thistime,onlytwologgingsystems,namelylog4jandlogback,offerMDC

*functionality.Forjava.util.loggingwhichdoesnotsupportMDC,

*{@linkBasicMDCAdapter}willbeused.Forothersystems,i.eslf4j-simple

*andslf4j-nop,{@linkNOPMDCAdapter}willbeused.

*

*<p>

*Thus,asaSLF4Juser,youcantakeadvantageofMDCinthepresenceoflog4j,

*logback,orjava.util.logging,butwithoutforcingthesesystemsas

*dependenciesuponyourusers.

*

*<p>

*FormoreinformationonMDCpleaseseethe<a

*href="http://logback.qos.ch/manual/mdc.html">chapteronMDC</a>inthe

*logbackmanual.

*

*<p>

*Pleasenotethatallmethodsinthisclassarestatic.

*

*@authorCekiGülcü

*@since1.4.1

*/

这是MDC类上的注释,但是没有讲这个是干什么的。具体的内容在有一个页面:

Chapter8:MappedDiagnosticContext

简单来说就是日志的增强功能,如果配置了MDC,并添加了相应的keyvalue,就会在打日志的时候把key对应的value打印出来。

内部是用ThreadLocal来实现的,可以携带当前线程的context信息。

2.MDCAdapter——LogbackMDCAdapter

MDC中包装了一个MDCAdapter,这是一个接口,不同的log包有自己对应的实现。对于不支持MDC的包,比如java.util.logging,使用默认的BasicMDCAdapter,slf4j-nop有NOPMDCAdapter。

这里说的实现是LogbackMDCAdapter。

参考:

http://blog.csdn.net/xxcupid/article/details/51955356

相关推荐