在log中必須先了解log4j自帶的兩個類MDC和NDC
NDC和MDC是log4j用于存儲應用程序的上下文信息(context infomation),從而便于在log中使用這些上下文信息。
NDC采用了一個類似棧的機制來push存儲上下文信息,每一個線程都獨立地儲存上下文信息。比如說一個servlet就可以針對每一個request創建對應的NDC,儲存客戶端地址等等信息。相關的信息使用NDC.push(message);
在log的時候將信息輸出。在相應的PatternLayout中使用”%x”來輸出存儲的上下文信息
例如: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內部使用了類似map的機制來存儲信息,相對應的方法,MDC.put(key,value);在配置PatternLayout的時候使用:%x{key}來輸出對應的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
總:如果在項目中有過濾器或者模板Action,你可以把獲取公共的屬性方法直接定義在里面,然后在配置文件中配置獲取顯示
名稱: ?4C.ESL | .↗Evon
口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
mail: 聯系我