Java:Log4j 的簡單教學
Log4j 是目前開發 java 時很常用到的 log 套件,
以下整理一些我目前用到的功能,並附上更多更深入的教學。
首先在使用 Log4j 時我們要先將一些 jar 檔匯入,
如果有出現意外的 Exception 記得先找看看是不是有 jar 檔沒有匯入,
類似的問題將 Exception 丟到 google 就會有解答,所以在這邊就不詳細說明。
只列出官方的使用前須知:http://logging.apache.org/log4j/1.2/faq.html#1.3
(2011.10.04更新)
若您只是要快速產生或下載 Log4j 的設定檔,請參考:
Logback, Log4j 設定檔自動產生器
使用 Log4j 時我們可以建立一個 Log4j.properties 檔來描述我們要記錄的項目,
這個設定檔長得像下面這樣:
--------------------------------------------------------------------------------------------------------------
log4j.rootLogger=Info, A1, A2
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n
log4j.appender.A2.File=./log/Log4j.log
--------------------------------------------------------------------------------------------------------------
關於設定檔的詳細設定說明可以參考史帝芬心得筆記,重要部份節錄如下:
這些應用可以參考:利用log4j實作console log + file log + mail log + db log
關鍵字:Log4j、properties、設定檔、教學、示範、範例、設定
參考資料:
以下整理一些我目前用到的功能,並附上更多更深入的教學。
首先在使用 Log4j 時我們要先將一些 jar 檔匯入,
如果有出現意外的 Exception 記得先找看看是不是有 jar 檔沒有匯入,
類似的問題將 Exception 丟到 google 就會有解答,所以在這邊就不詳細說明。
只列出官方的使用前須知:http://logging.apache.org/log4j/1.2/faq.html#1.3
(2011.10.04更新)
若您只是要快速產生或下載 Log4j 的設定檔,請參考:
Logback, Log4j 設定檔自動產生器
使用 Log4j 時我們可以建立一個 Log4j.properties 檔來描述我們要記錄的項目,
這個設定檔長得像下面這樣:
--------------------------------------------------------------------------------------------------------------
log4j.rootLogger=Info, A1, A2
# A1 is set to be a ConsoleAppender
log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n
# A2 is set to be a file
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss}][%p][%C-%L] %m%n
log4j.appender.A2.File=./log/Log4j.log
--------------------------------------------------------------------------------------------------------------
關於設定檔的詳細設定說明可以參考史帝芬心得筆記,重要部份節錄如下:
- 階層: Log4j將輸出訊息分成五個等級,分別為DEBUG、INFO、WARN、ERROR、FATAL,在上面設定檔將輸出等級 設為INFO,就表示INFO~FATAL等級的訊息將會輸出,因此DEBUG等級的訊息就會被忽略,如果將設定檔的 第一行改為log4j.rootLogger=DEBUG, A1, A2,就會兩個訊息都輸出了。除了這五個等級外,也可以設為ALL或OFF, ALL很示全部訊息都輸出,OFF則表示不輸出訊息。
- 輸出格式: # %c 輸出日誌訊息所屬的類別的全名 # %d 輸出日誌時間點的日期或時間,指定格式的方式:%d{yyy-MM-dd HH:mm:ss }。 # %l 輸出日誌事件的發生位置,即輸出日誌訊息的語句處於它所在的類別的第幾行。 # %m 輸出訊息,如log(message)中的message。 # %n 輸出一個列尾符號。 # %p 輸出優先階層,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推。 # %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。 # %t 輸出產生該日誌事件的線程名。 # %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。 # %f 輸出日誌訊息所屬的類別的類別名。 值得注意的是A2的appender被設為org.apache.log4j.DailyRollingFileAppender表示Log4j會將日誌檔依日期分開。
1 package demo.log4j; 2 3 import org.apache.log4j.Logger; 4 import org.apache.log4j.PropertyConfigurator; 5 6 public class Log4jDemo { 7 8 static public void main(String args[]) { 9 10 // 純 java project 中,若將 Log4j.properties 和 java 檔放在一起, 11 // 則 Eclipse 會把他複製到 .class 檔的位置,(project路徑/build/classes/package路徑/檔名) 12 // 若是 web-application 的話,會在 (project路徑/WEB-INF/classes/package路徑/檔名) 13 PropertyConfigurator.configure("build/classes/demo/log4j/Log4j.properties"); 14 Logger logger = Logger.getLogger(Log4jDemo.class); 15 16 // 對應的 Log4j.properties 設定要在等級 Info 之上才會顯示,所以logger.debug 不會出現 17 logger.debug("Hello Log4j, this is debug message"); 18 19 // 以下的訊息會出現在 console 和 log file 中 20 logger.info("Hi Log4j, this will appear in console and log file"); 21 logger.error("This is error message!!!"); 22 } 23 }其結果會在 console 和 log file 中出現這些log :
[09/11/19 18:44:39][INFO][demo.log4j.Log4jDemo-20] Hi Log4j, this will appear in console and log file
[09/11/19 18:44:39][ERROR][demo.log4j.Log4jDemo-21] This is error message!!!
除了將 log 寫在 console 和 log file 外,Log4j 還可以寫入其他更多地方,如 DB、Email等等,這些應用可以參考:利用log4j實作console log + file log + mail log + db log
關鍵字:Log4j、properties、設定檔、教學、示範、範例、設定
參考資料:
留言
張貼留言