java - Log4j2 smtp 附加程序不适用于根记录器

标签 java logging log4j log4j2

我在我的应用程序中使用 log4j2.2。我希望在应用程序出现错误时收到电子邮件。

所以我配置了一个 smtp 附加程序:

<SMTP name="Mailer" subject="Ecall logs" to="${receipients}"
        from="${from}" smtpHost="${smtpHost}" smtpPort="${smtpPort}"
        smtpProtocol="${smtpProtocol}" smtpUsername="${smtpUser}"
        smtpPassword="${smtpPassword}" smtpDebug="true" bufferSize="200"
        ignoreExceptions="false">
</SMTP>

我将它添加到根记录器中:

<root level="error">
    <appender-ref ref="Console" />
    <appender-ref ref="AsyncFile" />
    <appender-ref ref="Mailer" />
</root>     

不幸的是,使用此配置,当应用程序出现错误时,我永远不会收到电子邮件。事实上,我还有其他一些自定义记录器:

<logger level="info" name="org.flywaydb" additivity="false">
    <appender-ref ref="Console" />
    <appender-ref ref="AsyncFile" />
</logger>

使用 100 行缓冲区为整个应用程序配置 smtp 记录器(捕获所有包中的所有错误)以便查看错误之前/之后发生的情况,哪种方法是正确的?

最佳答案

您可能发现了一个错误。 SMTP appender应在收到错误级别日志事件时发送电子邮件。它将尝试包含错误发生之前的“bufferSize”事件(从 TRACE 到 WARN)。

我认为 SMPT 附加程序不需要任何先前的非错误事件,但您可以尝试一下:

<root level="trace">
  <appender-ref ref="Console" level="error"/>
  <appender-ref ref="AsyncFile" level="error"/>
  <appender-ref ref="Mailer" level="trace"/>
</root> 

如果问题仍然存在,请在 log4j2 Jira 问题跟踪器上提交票证。

关于java - Log4j2 smtp 附加程序不适用于根记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391440/

相关文章:

logging - Nginx 理解访问日志栏

windows-7 - 为什么我的log4net日志条目不会显示在Windows 7的电锯中

java - 如何设置一个方法来设置多个 JLabel 的文本?

java - 从现有数组填充两个新数组

java - 无法从无效映射中解析映射文档 :hibernate

java - 如何计算 Android FAST 中多点两点之间的距离

tomcat - 如何登录 axis2 部署的 Web 服务

logging - flutterbit 连接到 fluidd 被拒绝

java - 如何为来自多个设备的输入配置 apache 电锯

java - 如何从核心项目登录