1. 程式人生 > >log4j 日誌的配置

log4j 日誌的配置

一、配置根Logger,格式為:

log4j.rootLogger = [ level ] , appenderName, appenderName, …

其中level為日誌級別,appenderName 則是日誌輸出型別。

二、日誌級別(從高到底)

  • off 關閉所有日誌記錄。
  • fatal 指出每個嚴重的錯誤事件將會導致應用程式的退出。
  • error 指出雖然發生錯誤事件,但仍然不影響系統的繼續執行。
  • warm 表明會出現潛在的錯誤情形。
  • info 一般用於粗粒度級別上,強調應用程式的執行全程。
  • debug 一般用於細粒度級別上,對除錯應用程式非常有幫助。
  • all 用於開啟所有日誌記錄。

三、appender 日誌輸出型別

appender的名字是可以隨便起的,只要在下面的配置中做對應的配置就好。Log4j官方的appender給出了以下幾種實現

  • org.apache.log4j.ConsoleAppender(控制檯)
  • org.apache.log4j.FileAppender(檔案)
  • org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)
  • org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)
  • org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)
log4j.rootLogger=DEBUG, Console ,File ,DailyRollingFile ,RollingFile

#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern
=%d [%t] %-5p [%c] - %m%n #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = C://log2.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n #DailyRollingFile log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRollingFile.File = C://log3.log log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n #RollingFile log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender log4j.appender.RollingFile.File = C://log4.log log4j.appender.RollingFile.MaxFileSize=1KB log4j.appender.RollingFile.MaxBackupIndex=3 log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

MaxFileSize 是日誌檔案的最大尺寸;
MaxBackupIndex是日誌檔案的個數,假如超過了,則覆蓋,主要考慮到的是硬碟的容量問題;

四、layout 日誌資訊格式

Log4j提供的layout有以下幾種:

  • org.apache.log4j.HTMLLayout(以HTML表格形式佈局)
  • org.apache.log4j.PatternLayout(可以靈活地指定佈局模式)
  • org.apache.log4j.SimpleLayout(包含日誌資訊的級別和資訊字串)
  • org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等等資訊)

PatternLayout是我們以後推薦使用的,很靈活;

有個ConversionPattern屬性,靈活配置輸出屬性:

%m 輸出程式碼中指定的訊息;

%M 輸出列印該條日誌的方法名;

%p 輸出優先順序,即DEBUG,INFO,WARN,ERROR,FATAL;

%r 輸出自應用啟動到輸出該log資訊耗費的毫秒數;

%c 輸出所屬的類目,通常就是所在類的全名;

%t 輸出產生該日誌事件的執行緒名;

%n 輸出一個回車換行符,Windows平臺為”rn”,Unix平臺為”n”;

%d 輸出日誌時間點的日期或時間,預設格式為ISO8601,也可以在其後指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2002-10-18 22:10:28,921;

%l 輸出日誌事件的發生位置,及在程式碼中的行數;

五、Threshold屬性指定輸出等級

Threshold屬性可以指定日誌level ,比如我們指定某個appender的Threshold為WARN,那這個appender輸出的日誌資訊就是WARN級別以及WARN以上的級別;假如我們指定的是ERROR,那這個就輸出ERROR或者FATAL日誌資訊;

當然這裡有個提前 rootLogger裡配置的level必須小於Threshold層級 否則無效 還是按照總的rootLogger裡的level來輸出,一般我們實際實用的話 rootLogger裡配置DEBUG,然後某個檔案專門儲存ERRO日誌,就配置下Threshold為ERROR。

log4j.rootLogger=DEBUG, Console ,DFile ,EFILE



#Console  

log4j.appender.Console=org.apache.log4j.ConsoleAppender  

log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  



#DEBUGFile

log4j.appender.DFile = org.apache.log4j.FileAppender

log4j.appender.DFile.File = C://DEBUG.log

log4j.appender.DFile.layout = org.apache.log4j.PatternLayout

log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

log4j.appender.DFile.Threshold = DEBUG

#ERRORFile

log4j.appender.EFILE = org.apache.log4j.FileAppender

log4j.appender.EFILE.File = C://ERROR.log

log4j.appender.EFILE.layout = org.apache.log4j.PatternLayout

log4j.appender.EFILE.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

log4j.appender.EFILE.Threshold = ERROR

rootLogger裡配置DEBUG,
DFile的Threshold 配置為DEBUG ,輸出debug以上級別的資訊
EFILE的Threshold 配置為ERROR, 輸出error 以上級別的資訊

六 、Append 屬性指定是否追加內容

Log4j預設是不斷的把日誌內容追加到日誌檔案,這裡就有個屬性 Append 預設就是true,假如我們設定成false 就不追加了, 直接覆蓋前面的內容;

log4j.rootLogger=DEBUG, Console ,FIEL


#Console  

log4j.appender.Console=org.apache.log4j.ConsoleAppender  

log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  

#FIEL

log4j.appender.FIEL = org.apache.log4j.FileAppender

log4j.appender.FIEL.File = C://log.log

log4j.appender.FIEL.layout = org.apache.log4j.PatternLayout

log4j.appender.FIEL.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

log4j.appender.FIEL.Append = false