Проблема с кодировкой Log4j - PullRequest
2 голосов
/ 19 августа 2009

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

Для кодировщиков, использующих этот макет, должна быть установлена ​​кодировка 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="myapp@...com" />
    <param name="Threshold" value="error" />
    <param name="To" value="me@gmail.com" />
    <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

Ответы [ 4 ]

2 голосов
/ 20 августа 2009

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

1 голос
/ 11 августа 2010

Последняя версия (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.
1 голос
/ 19 августа 2009

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

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

0 голосов
/ 20 августа 2009

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

...