Search

Java - log4j.properties 設定檔

2015-06-10 3:24 PM
在完成 Log4j 的部屬後首先要做的就是 log4j.properties 檔案的設定
這裡將解釋該如何設定 Log 的層級、格式以及輸出檔案的方法
程式碼範例
#log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = ERROR, console, rollingFile
#level=DEBUG,all can be output

#apche log  
log4j.logger.org.apache.commons=ERROR  
  
#spring log  
log4j.logger.org.springframework=ERROR  
log4j.logger.com.opensymphony=ERROR
  
#hibernate log  
log4j.logger.org.hibernate=ERROR 
log4j.logger.org.hibernate.SQL=DEBUG  
log4j.logger.org.hibernate.hql=DEBUG  
log4j.logger.org.hibernate.type=ERROR
log4j.logger.org.hibernate.type.BasicTypeRegistry=ERROR  
  
#c3p0 log  
log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=ERROR 

#others log
log4j.logger.com.mchange=ERROR

#console is set to be a ConsoleAppender
log4j.appender.console = org.apache.log4j.ConsoleAppender
#console have four patterns
#org.apache.log4j.HTMLLayout
#org.apache.log4j.PatternLayout
#org.apache.log4j.SimpleLayout
#org.apache.log4j.TTCCLayout
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#define the output type
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

#file is set to output to a extra file
log4j.appender.rollingFile = org.apache.log4j.RollingFileAppender
#the absolute route of the log4j file
#log4j.appender.rollingFile.File = /log.txt
log4j.appender.rollingFile.File = ${web.root}/WEB-INF/logs/webapp.log
#the size
log4j.appender.rollingFile.MaxFileSize = 500KB
#back up a file
log4j.appender.rollingFile.MaxBackupIndex = 50
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n
詳細解說
首先要設定 root logger 的層級
未特別設定的 package 將會依照此層級輸出
這裡設定為 ERROR, 表示錯誤皆會被記錄下來, 其他層級資訊則略過
Logger 層級的大小為 FATAL > ERROR > WARN > INFO > DEBUG
#log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = ERROR, console, rollingFile
#level=DEBUG,all can be output
再來便是指定 package 的 Logger 層級
此設定將包含底下所有 package 內的 class 都將套用此層級
只要在 log4j.logger 後面加入要設定的 package 及層級即可
#apche log  
log4j.logger.org.apache.commons=ERROR  
  
#spring log  
log4j.logger.org.springframework=ERROR  
log4j.logger.com.opensymphony=ERROR
  
#hibernate log  
log4j.logger.org.hibernate=ERROR 
log4j.logger.org.hibernate.SQL=DEBUG  
log4j.logger.org.hibernate.hql=DEBUG  
log4j.logger.org.hibernate.type=ERROR
log4j.logger.org.hibernate.type.BasicTypeRegistry=ERROR  
  
#c3p0 log  
log4j.logger.com.mchange.v2.resourcepool.BasicResourcePool=ERROR 

#others log
log4j.logger.com.mchange=ERROR
接下來便是設定輸出的格式及方式
首先我們來看在 console 內輸出的設定方式
log4j.appender.console = org.apache.log4j.ConsoleAppender
輸出時有4種格式可設定 但我們通常會使用 PatternLayout 做設定
log4j.appender.console.layout = org.apache.log4j.PatternLayout
因為這可以任意設定要輸出的格式與資訊
% 之後的字元將視為格式修飾或轉換字元
- 表示文字置左
d 表示輸出日期 後面接上大括號 { } 則可以額外設定日期輸出格式
c 表示輸出完整的 class path
p 表示此行 log 的輸出層級
m 為 logger 設定的 message 以及 exception 本身自帶的訊息
n 表示換行符號
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
而檔案的輸出方式則是多了幾個設定屬性
首先加入檔案輸出設定 此處使用 rollingFile 作範例
檔案將會自動依照設定分割 避免單一 log 檔案內太多訊息不易查看
log4j.appender.rollingFile = org.apache.log4j.RollingFileAppender
再來加入檔案輸出的路徑, 大小及 log 檔最大保留數量
log4j.appender.rollingFile.File = ${web.root}/WEB-INF/logs/webapp.log
log4j.appender.rollingFile.MaxFileSize = 500KB
log4j.appender.rollingFile.MaxBackupIndex = 50
此處在路徑設定中使用的 $[web.root} 就是在 web.xml 內設定的 webAppRootKey 參數值
而 500KB 則表示檔案大小到達 500KB 後將重新命名檔案名稱並建立一個新的空白檔案
若 log 檔案數量超過50個 則會刪除最舊的那一個
Console 輸出與檔案輸出可以共存
如此即完成 log4j.properties 的設定
各項資料連結
Apache Log4j 1.2.x
Pattern Layout

No comments:

Post a Comment