SSH集成log4j日志環境[轉]


第一步:在web.xml初始化log4j

Xml代碼   收藏代碼
  1. <context-param>  
  2.     <param-name>log4jConfigLocation</param-name>  
  3.     <param-value>/WEB-INF/classes/log4j.properties</param-value>  
  4. </context-param>  
  5.   
  6. <context-param>  
  7.     <param-name>log4jRefreshInterval</param-name>  
  8.     <param-value>6000</param-value>  
  9. </context-param>  
  10. <listener>  
  11.     <listener-class>  
  12.         org.springframework.web.util.Log4jConfigListener  
  13.     </listener-class>  
  14. </listener>  

 

 第二步:在上面的配置中,使用了log4j.properties作為log4j的配置文件,log4j.properties摘要代碼如下:

Xml代碼   收藏代碼
  1. log4j.rootLogger=ERROR,consol  
  2. log4j.logger.jmccLogger=ERROR,html  
  3.   
  4. log4j.appender.console=org.apache.log4j.ConsoleAppender  
  5. log4j.appender.console.layout=org.apache.log4j.SimpleLayout  
  6.   
  7. log4j.appender.html=org.apache.log4j.RollingFileAppender  
  8. log4j.appender.html.maxFileSize=1KB  
  9. log4j.appender.html.maxBackupIndex=2  
  10. log4j.appender.html.file=${webapp.root}/WEB-INF/log/ex.html  
  11.   
  12. log4j.appender.html.layout=org.apache.log4j.HTMLLayout  
  13. log4j.appender.html.layout.locationInfo=true  

      說明:在web環境中集成log4j,關鍵的一步是如何找到項目真實路徑,當然你也可以固執地把日志文件放在某個絕對路徑上:比如log4j.appender.html.file=D:/ex.html 。但是真的要使用絕對路徑嗎?幸運的是spring為我們解決了此問題,spring提供了org.springframework.web.util.Log4jConfigListener監聽器來初始化一些必要的log4j信息,比如它使用了System.setProperty(keyroot);  沒錯key=webapp.root,而root就是當前項目的真實路徑(得到項目的真實路徑也很簡單ServletContext.getRealPath("/")),這樣我們就可以使用${webapp.root}來獲取項目的真實路徑。

 

第三步:獲取Logger對象,並在需要記錄日志的地方進行日志記錄。

 

補充:如果熟悉listener,並且知ServletContext.getRealPath("/"),其實這個用的頻率也較高。那么完全可以寫一個類似spring的Log4jConfigListener,當然也可以直接拷貝這個類,如果在項目中你並不想使用spring,只是想用log4j

 

補充2:log4j記錄異常棧: Log4jUtil.getLogger()得到的是一個Logger對象

Java代碼   收藏代碼
  1. StackTraceElement [] messages=exception.getStackTrace();  
  2.  int length=messages.length;  
  3.  for(int i=0;i<length;i++){  
  4.    Log4jUtil.getLogger().error("類名:"+messages[i].getClassName());  
  5.    Log4jUtil.getLogger().error("文件名:"+messages[i].getFileName());  
  6.    Log4jUtil.getLogger().error("方法名:"+messages[i].getMethodName());  
  7.    Log4jUtil.getLogger().error("行號:"+messages[i].getLineNumber());  
  8.     }  

 


免責聲明!

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



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