2009-08-19 4 views
2

Я настроил log4j SMTPAppender для отправки электронной почты мне на ошибки. Он работает, но у меня проблема с данными без ASCII. Конфигурация использует HTMLLayout и их документация говорится:Проблема с кодировкой Log4j

Appenders, используя этот формат должен иметь их кодирования установлены в UTF-8 или UTF-16, в противном случае событие, содержащие символы не ASCII может привести к повреждению файлов журнал.

Мои файлы журнала должны содержать данные UTF-8, но я не могу найти, где я могу установить кодировку для appender. Вот 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

+1

Да, конечно: http://gist.github.com/252856 – valodzka

ответ

1

Согласно code of the latest SMTPAppender (1.2.15), не только нет setEncoding, но кодировка там даже не упоминается.

Вы действительно видите проблемы с ним? Если да, почему бы не наследовать от SMTPAppender или не предоставить свою собственную реализацию?

+0

Спасибо, я подумал об этом, но я надеялся, что есть стандартное решение. – valodzka

-1

набор это свойство в конфигурации log4j: log4j.appender.MyAppender.Encoding = UTF-8

+0

Не работал для меня. Ты это пробовал? – cherouvim

+0

Я сделал, какую версию log4j вы используете? – KingInk

+0

он не работает для меня тоже. Я использую последний log4j lib log4j-1.2.16.jar. Как я могу это решить? – kitokid

2

Вы смотрели на Logback? Его SMTPAppender поддерживает настройку кодировки символов.

1

Последняя версия (1.2.16) разрешает это.

http://svn.apache.org/viewvc/logging/log4j/tags/v1_2_16/src/main/java/org/apache/log4j/net/SMTPAppender.java?revision=929374&view=markup

subject: line 144 
body: line 390 
content type: line 394 

Он также упоминается в журнале изменений http://logging.apache.org/log4j/1.2/changes-report.html#a1.2.16

SMTPAppender does not properly encode subject or content containing non-ASCII characters. Fixes 44644.