2015-06-10
3:24 PM
這裡將解釋該如何設定 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