1.MDC是一個高級一些的工具,可以配置分用戶(userid)寫日志,也可以分線程
2.方法和道理都是相似的,在寫入日志之前配置線程名或者用戶id
3.如果將線程名配置為目錄,可以將不同線程的日志輸送到不同的目錄
appender配置:
<Property name="log.basedir">e:/log</Property>
<Property name="log.layout">%d %-5p %t (%c:%L) - %m%n</Property>
<Routing name="thread">
<Routes pattern="$${ctx:ThreadName}">
<Route>
<RollingFile name="RollingFile-${ctx:ThreadName}" fileName="${log.basedir}/${ctx:ThreadName}.log"
filePattern="${log.basedir}/${ctx:ThreadName}-%d{HH-mm-ss}.log" append="false">
<PatternLayout pattern="${log.layout}"/>
<Policies>
<SizeBasedTriggeringPolicy size="100M"/>
</Policies>
<DefaultRolloverStrategy max="100"/>
<Filters>
<!--此處可添加過濾,被我刪掉了,可以根據等級過濾-->
</Filters>
</RollingFile>
</Route>
<Route ref="STDOUT" key="${ctx:ThreadName}"/>
</Routes>
</Routing>
寫入日志的時候,前后添加設置和移除ctx:ThreadName:
ThreadContext.put("ThreadName", "name");
ThreadContext.remove("ThreadName");