2011-08-22 59 views

回答

2

「記錄到XML」是一個相當普遍的要求,因爲沒有像標準日誌文件格式那樣的東西。但是由於XML文件是文本文件,哪些日誌框架可以編寫,並且由於許多這些框架允許配置日誌行格式,所以使用選擇的XML標籤定義日誌輸出時沒有問題。

對於log4j的,它可能是這樣的:

log4j.appender.A1.layout.ConversionPattern=<line>%n<date>%d</date>%n<threadName>%t</threadName>%n<level>%p</level>%n<logger>%c</logger>%n<text>%m</text>%n</line>%n 

產生輸出示例:

<line> 
<date>2011-08-28 08:27:33,727</date> 
<threadName>main</threadName> 
<level>INFO</level> 
<logger>com.log4jeval.Main</logger> 
<text>Entering application.</text> 
</line> 

這看起來挺像XML,不是嗎?但是,它將缺少XML序言,因此在技術上它不會有效。如果它至關重要,我建議編寫一個擴展org.apache.log4j.FileAppender(或其任何子類)的自定義appender,以便處理每個日誌文件中的任何其他打開/關閉文本。

與日誌寫入XML的問題,即不以純文本文件的存在,是你必須強制執行不是一個可能的日誌語句將打印XML禁用的字符,否則你會與非結束格式良好的XML。例如,如果沒有編寫自定義appender —,請參見org.apache.log4j.HTMLAppender來源,這很難實現。

+0

是否有一個現有的appender將輸出寫入XML? –

+0

@the_drow:不在Log4j 1.2.x.我能想到的最接近HTMLAppender,但仍然不是XML。 – MaDa

+0

@MaDa感謝您的提示,擴展HTMLAppender可能是一個好方法。我最終編寫了一些自定義代碼來收集日誌數據,將其序列化爲xml並將其轉換爲任何輸出格式,我需要 – mamuesstack

相關問題