Posted on 2012-11-06 16:34
xcp 閱讀(4909)
評(píng)論(1) 編輯 收藏 所屬分類:
JAVA
在log中必須先了解log4j自帶的兩個(gè)類MDC和NDC
NDC和MDC是log4j用于存儲(chǔ)應(yīng)用程序的上下文信息(context infomation),從而便于在log中使用這些上下文信息。
NDC采用了一個(gè)類似棧的機(jī)制來push存儲(chǔ)上下文信息,每一個(gè)線程都獨(dú)立地儲(chǔ)存上下文信息。比如說一個(gè)servlet就可以針對(duì)每一個(gè)request創(chuàng)建對(duì)應(yīng)的NDC,儲(chǔ)存客戶端地址等等信息。相關(guān)的信息使用NDC.push(message);
在log的時(shí)候?qū)⑿畔⑤敵?。在相?yīng)的PatternLayout中使用”%x”來輸出存儲(chǔ)的上下文信息
例如:String remoteAddr = request.getRemoteAddr();
NDC.push(remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS} [%X] -[%c]-[%p] %m%n
MDC內(nèi)部使用了類似map的機(jī)制來存儲(chǔ)信息,相對(duì)應(yīng)的方法,MDC.put(key,value);在配置PatternLayout的時(shí)候使用:%x{key}來輸出對(duì)應(yīng)的value
例如:String remoteAddr = request.getRemoteAddr();
MDC.put("ip", remoteAddr);
在log4j.properties文件中作如下的配置即可
log4j.appender.console.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss,SSS} [%X{ip}] -[%c]-[%p] %m%n
總:如果在項(xiàng)目中有過濾器或者模板Action,你可以把獲取公共的屬性方法直接定義在里面,然后在配置文件中配置獲取顯示
名稱: ?4C.ESL | .↗Evon
口號(hào): 遇到新問題?先要尋找一個(gè)方案乄而不是創(chuàng)造一個(gè)方案こ
mail: 聯(lián)系我