4

我研究了其他类似的问题,并进行了一些谷歌搜索以找到我的答案,但我的问题仍未得到解答。我仍然不熟悉其中一些是如何工作的,所以请耐心等待。

我们的 maven pom.xml 使用了 slf4j 依赖:

pom.xml 从使用 maven 导入 slf4j

我们的 log4j2.xml 文件如下所示:

包含 smtp appender 的 log4j2.xml 文件

我只将它添加到上面的 log4j2.xml 文件<SMTP name="Mail" ...> </SMTP>中,并在我添加的文件中降低<logger name="com.path.class1" ...> <appender ...> </logger>

但是由于某种原因,当我调用 log.error("error message") 时,我的电子邮件没有发送给我。我知道 smtp 主机可以工作,因为它用于 .NET 服务。smtp 服务器不需要任何凭据即可使用它。我知道我的 log.error 调用位于正确的目录和文件路径中。我试过设置端口,但这没有任何区别。如何让电子邮件通知正常工作?

我什至尝试了mailAppender,但这也没有用:在此处输入图像描述

4

3 回答 3

1

所以我终于能够让 SMTP 通知正常工作。这是使它工作的 log4j2.xml 文件:

在此处输入图像描述

于 2013-10-08T18:22:07.067 回答
0

在你的 log4j.xml

尝试使用 Mail Appender 配置它

确保您能够使用服务器的 SMTP 发送电子邮件。

<?xml version="1.0" encoding="UTF-8"?>

<appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender">
    <param name="BufferSize" value="50" />
    <param name="SMTPHost" value="smtp.mail.example.com" />
    <param name="SMTPPort" value="587" />
    <param name="SMTPUsername" value="myemail_id@example.com" />
    <param name="SMTPPassword" value="mypassword" />
    <param name="From" value="fromemail_id@example.com" />
    <param name="To" value="to_emailid@example.com" />
    <param name="Subject" value="Testing Log4j mail notification" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="error" />
        <param name="LevelMax" value="fatal" />
    </filter>
</appender>

<root>
    <priority value="info" />
    <appender-ref ref="mailAppender" />
</root>

于 2013-10-01T18:44:51.233 回答
0

您不能混合使用 log4j2 和 log4j-1.x 附加程序。Log4J2 SMTP 附加程序应该可以工作。

我怀疑发生了一些错误。类路径中有 java 邮件罐子吗?您可以更改 log4j2.xml 配置的开头,以便它将调试消息打印到控制台吗?

<Configuration status="debug"...
于 2013-10-01T23:08:59.920 回答