2009-08-19 148 views
2

我配置了log4j SMTPAppender來發送錯誤郵件給我。它的工作原理,但我有非ASCII數據的問題。配置使用HTMLLayout及其文檔狀態:Log4j編碼問題

使用此佈局的附加器應將其編碼設置爲UTF-8或UTF-16,否則包含非ASCII字符的事件可能會導致損壞的日誌文件。

我的日誌文件必須包含UTF-8數據,但我找不到可以在哪裏設置appender編碼。這裏是附加器配置:

<appender name="MAIL" class="org.apache.log4j.net.SMTPAppender"> 
    <param name="BufferSize" value="25" /> 
    <param name="SMTPHost" value="localhost" /> 
    <param name="From" value="[email protected]" /> 
    <param name="Threshold" value="error" /> 
    <param name="To" value="[email protected]" /> 
    <param name="Subject" value="Error Occurred" /> 
    <param name="LocationInfo" value="true"/> 
    <param name="encoding" value="UTF-8" /> 
    <!-- <param name="Encoding" value="UTF-8"/> --> 
    <layout class="org.apache.log4j.HTMLLayout"> 
    </layout> 
</appender> 

當應用程序運行時我:

的log4j:WARN沒有這樣的屬性[編碼]在org.apache.log4j.net.SMTPAppender
+0

還提到所以根據您接受的答案,你有沒有延長SMTPAppender?謹慎給我們來源? – cherouvim 2009-12-08 10:17:50

+1

是的,當然是:http://gist.github.com/252856 – valodzka 2009-12-09 21:48:06

回答

1

按照code of the latest SMTPAppender (1.2.15),不僅沒有setEncoding,但編碼甚至沒有提到那裏。

你真的看到它的問題嗎?如果是這樣,爲什麼不從SMTPAppender繼承或提供您自己的實現?

+0

謝謝,我已經想過了,但我希望有一個非常規的解決方案。 – valodzka 2009-08-19 19:54:37

-1

集這個屬性在log4j的配置: log4j.appender.MyAppender.Encoding = UTF-8

+0

沒有爲我工作。你試過了嗎? – cherouvim 2009-12-08 10:30:14

+0

我在做什麼版本的log4j? – KingInk 2010-02-16 14:27:38

+0

它也不適合我。我使用最新的log4j lib log4j-1.2.16.jar。我該如何解決它? – kitokid 2011-11-22 01:45:52