先前的範例中,l都是靠log4j.properites這個檔案來設定log4j的組態,例如輸出位置及輸出樣式等。

log4j除了可用log4j.properties這種key-value型式的檔案來進行組態設定外,也可使用log4j.xml來進行設定。因為log4j預設會讀取classpath下的log4j.xml及log4j.properties來載入log4j的會用到的類別。

本篇要介紹使用log4j.xml的寫法,延續至此篇範例。log4範例的環境參考這裡

 

首先在專案的src下建立一個log4j.xml的檔案。

src上按滑鼠右鍵>New>Others...,然後會出現下面對話視窗,在上方的Wizards欄位輸入"xml"及可篩選出XML檔,點選XML File然後按Next

 

把檔案命名為log4j.xml然後按Finish

 

log4j.xml檔就出現在src下囉

 

再編寫log4j.xml前,先確認一下準備用來測試的MainTest.java內容,和前一篇範例相同

...

...

 

接下來編寫log4j.xml的內容,功能和log4j.properties相同,只是寫法由key=value的寫法改成xml的寫法

...

...

說明

首先要宣告log4j.xml的文件型別定義(Document Type Definition, DTD),參考至這裡 (line 2)

(題外話,很多時候用來設定framework的xml組態檔中的DTD我都無法確定官方的原始出處在哪,最多就是從官方的範例檔複製,但總有點不太踏實的感覺)

所有log4j的設定都必須放在<log4j:configuration>...</log4j:configuration>之內 (line 3 ~ line 14)

設定一個appender為ConsoleAppender,名稱叫A1(line 4)

設定appender的layout為PatternLayout (line 5)

設定layout的pattern,參數名為conversionPattern,value為想要的輸出格式(line 6, line 7)。
(注意本範例的pattern有更改,所以輸出資訊會不同於前範例)

 

接著要將設定完的appender提供給logger使用,和前範例一樣直接使用rootLogger

使用<root>..</root>標籤來設定rootLogger (line 10 ~ line 13)

rootLogger的LEVEL設定為DEBUG (line 11)

將rootLogger的appender參考至剛設定好的A1 appender (line 12)

設定完就執行MainTest.java來測式看看,結果會在Eclipse的console印出下面內容,效果就和log4j.properties一樣。

結論是log4j或許是太舊了,無論是properties或是xml的寫法都是東抄西抄來的,感覺很不踏實。

我個人是比較偏愛xml的寫法,因為會覺得比較嚴謹一點,而且有些appender只能用xml來寫。

 

關於log4j.xml的說明可參考

Log4j XML Configuration Primer

 

 

 

 

文章標籤
創作者介紹

菲比傻大姐&肉豬

phoebelin0606 發表在 痞客邦 PIXNET 留言(0) 人氣()