標籤:
Log4j基本使用方法
主講人:王少華 QQ群號:483773664
學習目標
Log4j由三個重要的組件構成:日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。
一、輸出層級(一)輸出層級
| 1 |
log4j.rootLogger=debug, stdout,logfile |
其中debug指的日誌記錄器(Logger)的輸出層級。
(二)、各層級的含義
-
fatal:指出嚴重的錯誤事件,將會導致應用程式的退出
-
error:指出雖然發生錯誤事件,但仍然不影響系統的繼續運行
-
warm:表明會出現潛在錯誤的情形
-
info:在粗粒度層級上指明訊息,強調應用程式的運行過程
-
debug:指出細粒度資訊事件,對調試應用程式非常有協助。
各應用程式的優先順序如下
fatal>error>warn>info>debug
這些優先順序的含義是:日誌記錄器(Logger)將只輸出那些層級高於或等於它的資訊。例如,層級為debug,將輸出fatal、error、warn、info、debug層級的日誌資訊;而層級為error,將只輸出fatal、error層級的日誌資訊。
二、日誌輸出目的地Appender(一)日誌輸出的目的地
| 1 |
log4j.rootLogger=debug, stdout,logfile |
其中,stdout、logfile指的是日誌輸出的目的地的名稱
(二)目的地的類型
Log4j允許日誌輸出到多個目的地,一個輸出目的地被稱為一個Appender.最常用的有二種:
除了這二種以外,Log4j還提供了以下三種輸出目的地
-
org.apache.log4j.DailyRollingFileAppender(每天產生一個記錄檔),
-
org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案),
-
org.apache.log4j.WriterAppender(將日誌資訊以流格式發送到任意指定的地方)
三、日誌布局類型Layout(一)日誌布局類型
Appender必須使用一個與之相關聯的布局類型Layout,用來指定它的輸出樣式
| 1 |
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout |
(二)Layout的樣式
log4j中最常用的Layout有以下3種
-
HTMLLayout:格式化日誌輸出為HTML表格
-
SimpleLayout:以一種非常簡單的方式格式化日誌輸出,它輸出層級Level,然後跟著一個破折號“-----”,最後是日誌訊息
-
PatternLayout:根據指定轉換模式格式化日誌輸出,從而支援豐富多樣的輸出格式。需要配置layout.ConversionPattern屬性,若沒有配置該屬性,則使用預設的轉換模式。
除了以上3種常用的,還有以下一種
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等資訊)
四、轉換模式ConversionPattern(一)、執行個體
| 1 |
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}%l %F %p %m%n |
(二)參數說明
對於PatternLayout,需要配置layout.ConversionPattern屬性,常用的配置參數及含義如下:
-
%d:用來設定輸出日誌的日期和時間,預設格式為ISO8601。也可以在其後指定格式,比如%d{yyyy-MM-dd HH:mm:ss},輸出格式類似於2016-04-25 09:10:08
-
%m:用來輸出代碼中指定的訊息
-
%n:用來輸出斷行符號分行符號
-
%l:用來輸出日誌事件的發生位置,包抱類名、發生的線程,以及在代碼中的行數。如:chapter06_08.Test.main(Test.java:26)
-
%p:用來輸出優先順序,即debug、info、warn、error、fatal等
-
%F:用來輸出檔案名
-
%M:用來輸出方法名
| 1 |
2016-04-25 13:43:34chapter06_08.Test.main(Test.java:26) Test.java ERROR / by zero |
五、在代碼中使用Log4j(一)得到記錄器
使用Log4j的第一步就是擷取日誌記錄器,它負責控制日誌資訊。其文法如下:
| 1 |
public static Logger getLogger( String name) |
Name一般取本類的名字
| 1 |
private static Logger logger = Logger.getLogger(Test.class.getName()); |
(二)插入日誌資訊
Logger對象提供了一系列方法來輸出不同層級的日誌資訊
-
public void debug(Object msg)
-
public void debug(Object msg,Throwable t)
-
public void info(Object msg)
-
public void info(Object msg,Throwable t)
-
public void warn(Object msg)
-
public void warn(Object msg,Throwable t)
-
public void error(Object msg)
-
public void error(Object msg,Throwable t)
-
public void fatal(Object msg)
-
public void fatal(Object msg,Throwable t)
六、更多
關於Log4j更加詳細的介紹可以去官網查看文檔,也可以去我的部落格。
我的部落格:http://teacherwang.blog.51cto.com/10946447/1767469
log4j文檔:http://logging.apache.org/log4j/1.2/manual.html
來自為知筆記(Wiz)
跟王老師學異常(九):Log4j基本使用方法