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