Log4j编码问题

发布于 2024-08-02 04:00:14 字数 1393 浏览 1 评论 0原文

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

使用此布局的附加程序应将其编码设置为 UTF-8 或 UTF-16,否则包含非 ASCII 字符的事件可能会导致日志文件损坏。

我的日志文件必须包含 UTF-8 数据,但我找不到可以为附加程序设置编码的位置。 这是附加程序配置:

<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 中没有此类属性 [encoding]

I configured log4j SMTPAppender to send emails to me on errors. It works, but I have problem with non ASCII data. Configuration uses HTMLLayout and their documentation states:

Appenders using this layout should have their encoding set to UTF-8 or UTF-16, otherwise events containing non ASCII characters could result in corrupted log files.

My log files must contains UTF-8 data, but I can't find where I can set encoding for appender. Here is appender configuration:

<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>

When application runs I got:

log4j:WARN No such property [encoding] in org.apache.log4j.net.SMTPAppender

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

寂寞清仓 2024-08-09 04:00:14

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

Have you looked at logback? Its SMTPAppender supports setting the character encoding.

念﹏祤嫣 2024-08-09 04:00:14

根据 最新的SMTPAppender(1.2.15)的代码,不但没有setEncoding,连编码都没有提到。

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

According to the code of the latest SMTPAppender (1.2.15), not only there no setEncoding, but the encoding does not even mentioned there.

Do you actually see issues with it? If so, why not inheriting from SMTPAppender or provide your own implementation?

魂ガ小子 2024-08-09 04:00:14

最新(1.2.16)版本解决了这个问题。

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.

The latest (1.2.16) version solves this.

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

It's also mentioned in the changelog 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.
谁的新欢旧爱 2024-08-09 04:00:14

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

set this property in log4j configuration:
log4j.appender.MyAppender.Encoding=UTF-8

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文