【问题标题】:Log4j encoding problemLog4j 编码问题
【发布时间】:2010-11-21 02:10:09
【问题描述】:

我将 log4j SMTPAppender 配置为在出错时向我发送电子邮件。它可以工作,但我对非 ASCII 数据有疑问。配置使用HTMLLayout 及其文档状态:

使用此布局的附加程序应将其编码设置为 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="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 No such property [encoding] in org.apache.log4j.net.SMTPAppender

【问题讨论】:

  • 那么根据您接受的答案,您是否扩展了 SMTPAppender?愿意给我们来源吗?
  • 是的,当然:gist.github.com/252856

标签: java logging encoding smtp log4j


【解决方案1】:

你看过 logback 吗?其SMTPAppender支持设置字符编码。

【讨论】:

    【解决方案2】:

    根据code of the latest SMTPAppender (1.2.15),不仅没有setEncoding,而且编码也没有提到。

    你真的发现它有问题吗?如果是这样,为什么不从 SMTPAppender 继承或提供自己的实现?

    【讨论】:

    • 谢谢,我已经考虑过了,但我希望有标准的解决方案。
    【解决方案3】:

    最新 (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.
    

    【讨论】:

      【解决方案4】:

      在 log4j 配置中设置这个属性: log4j.appender.MyAppender.Encoding=UTF-8

      【讨论】:

      • 我做了什么版本的log4j你运行的是什么?
      • 它也不适合我。我使用最新的 log4j lib log4j-1.2.16.jar。我该如何解决?
      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2017-11-10
      • 1970-01-01
      • 2019-02-05
      相关资源
      最近更新 更多