log4j獲取IP顯示在日志中


要想實現獲取IP並顯示在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

如果在項目中有過濾器,你可以把獲取ip 的方法直接定義在過濾器中,然后在配置文件中配置獲取ip的顯示就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM