1
日誌文件是不是應該被機器讀取,而只能被用戶讀取?我想知道是否有任何將輸出寫入XML的日誌框架的文件appender。爲什麼日誌文件通常是平坦的?
日誌文件是不是應該被機器讀取,而只能被用戶讀取?我想知道是否有任何將輸出寫入XML的日誌框架的文件appender。爲什麼日誌文件通常是平坦的?
「記錄到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
來源,這很難實現。
是否有一個現有的appender將輸出寫入XML? –
@the_drow:不在Log4j 1.2.x.我能想到的最接近HTMLAppender,但仍然不是XML。 – MaDa
@MaDa感謝您的提示,擴展HTMLAppender可能是一個好方法。我最終編寫了一些自定義代碼來收集日誌數據,將其序列化爲xml並將其轉換爲任何輸出格式,我需要 – mamuesstack