繁体   English   中英

如何使用slf4j / log4j2发送电子邮件通知?

[英]How to send email notifications with slf4j / log4j2?

我研究了其他类似的问题,并做了一些谷歌搜索找到我的答案,但我的问题仍然没有答案。 我仍然不熟悉其中的某些功能,所以请耐心等待。

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

pom.xml通过使用Maven导入slf4j

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

包含smtp附加程序的log4j2.xml文件

我只将此添加到上面的log4j2.xml文件<SMTP name="Mail" ...> </SMTP> ,然后在我添加的文件<logger name="com.path.class1" ...> <appender ...> </logger>

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

我什至尝试过mailAppender,但这也不起作用: 在此处输入图片说明

在你的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>

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

我怀疑正在发生错误。 您在类路径中是否有Java邮件罐? 您可以更改log4j2.xml配置的开始,以便它将调试消息打印到控制台吗?

<Configuration status="debug"...

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM