1. 程式人生 > 其它 >日誌框架log4j

日誌框架log4j

本篇部落格主要講解日誌框架log4j在web工程中的配置和使用。

簡介

Log4j是Apache的一個開放原始碼專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件、甚至是套介面服務 器、NT的事件記錄器、UNIX Syslog守護程序等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌資訊的級別,我們能夠更加細緻地控制日誌的生成過程。

Log4j由三個重要的元件構成:日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。日誌資訊的優先順序從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌資訊的重要程度;日誌資訊的輸出目的地指定了日誌將列印到控制檯還是檔案中;而輸出格式則控制了日誌資訊的顯示內容。

配置檔案

Log4j支援兩種配置檔案格式,一種是XML格式的檔案,一種是properties格式的檔案。下面我們介紹使用properties格式做為配置檔案的方法: 

示例:

log4j.rootLogger=INFO, A1 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

① 配置根Logger,其語法為: 

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

其中,level 是日誌記錄的優先順序,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。Log4j建議只使用四個級別,優先順序從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這裡定義的級別,您可以控制到應用程式中相應級別的日誌資訊的開關。比如在這裡定義了INFO級別,則應用程式中所有DEBUG級別的日誌資訊將不被打印出來。 

appenderName就是指定日誌資訊輸出到哪個地方。您可以同時指定多個輸出目的地。

② 配置日誌資訊輸出目的地Appender,其語法為: 

log4j.appender.appenderName = fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1 = value1 
… 
log4j.appender.appenderName.option = valueN 

其中,Log4j提供的appender有以下幾種: 

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

(1)ConsoleAppender選項 

Threshold=WARN:指定日誌訊息的輸出最低層次。 
ImmediateFlush=true:認值是true,意謂著所有的訊息都會被立即輸出。 
Target=System.err:預設情況下是:System.out,指定輸出控制檯

(2)FileAppender 選項 

Threshold=WARN:指定日誌訊息的輸出最低層次。 
ImmediateFlush=true:預設值是true,意謂著所有的訊息都會被立即輸出。 
File=mylog.txt:指定訊息輸出到mylog.txt檔案。 
Append=false:預設值是true,即將訊息增加到指定檔案中,false指將訊息覆蓋指定的檔案內容。 

(3)DailyRollingFileAppender 選項 

Threshold=WARN:指定日誌訊息的輸出最低層次。 
ImmediateFlush=true:預設值是true,意謂著所有的訊息都會被立即輸出。 
File=mylog.txt:指定訊息輸出到mylog.txt檔案。 
Append=false:預設值是true,即將訊息增加到指定檔案中,false指將訊息覆蓋指定的檔案內容。 
DatePattern='.'yyyy-ww:每週滾動一次檔案,即每週產生一個新的檔案。當然也可以指定按月、周、天、時和分。即對應的格式如下: 

1)'.'yyyy-MM: 每月  
2)'.'yyyy-ww: 每週 
3)'.'yyyy-MM-dd: 每天 
4)'.'yyyy-MM-dd-a: 每天兩次 
5)'.'yyyy-MM-dd-HH: 每小時 
6)'.'yyyy-MM-dd-HH-mm: 每分鐘 

(4)RollingFileAppender 選項 

Threshold=WARN:指定日誌訊息的輸出最低層次。 
ImmediateFlush=true:預設值是true,意謂著所有的訊息都會被立即輸出。 
File=mylog.txt:指定訊息輸出到mylog.txt檔案。 
Append=false:預設值是true,即將訊息增加到指定檔案中,false指將訊息覆蓋指定的檔案內容。 
MaxFileSize=100KB: 字尾可以是KB, MB 或者是 GB. 在日誌檔案到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1檔案。 
MaxBackupIndex=2:指定可以產生的滾動檔案的最大數。

③ 配置日誌資訊的佈局,其語法為: