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
再來便是指定 package 的 Logger 層級
- #log4j.rootLogger = [ level ] , appenderName, appenderName, ...
- log4j.rootLogger = ERROR, console, rollingFile
- #level=DEBUG,all can be output
此設定將包含底下所有 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 內輸出的設定方式
輸出時有4種格式可設定 但我們通常會使用 PatternLayout 做設定
- log4j.appender.console = org.apache.log4j.ConsoleAppender
因為這可以任意設定要輸出的格式與資訊
- 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 檔案內太多訊息不易查看
再來加入檔案輸出的路徑, 大小及 log 檔最大保留數量
- log4j.appender.rollingFile = org.apache.log4j.RollingFileAppender
此處在路徑設定中使用的 $[web.root} 就是在 web.xml 內設定的 webAppRootKey 參數值
- log4j.appender.rollingFile.File = ${web.root}/WEB-INF/logs/webapp.log
- log4j.appender.rollingFile.MaxFileSize = 500KB
- log4j.appender.rollingFile.MaxBackupIndex = 50
而 500KB 則表示檔案大小到達 500KB 後將重新命名檔案名稱並建立一個新的空白檔案
若 log 檔案數量超過50個 則會刪除最舊的那一個
Console 輸出與檔案輸出可以共存
如此即完成 log4j.properties 的設定
各項資料連結
Apache Log4j 1.2.x
Pattern Layout
No comments:
Post a Comment