Log4j2 smtp appender对root logger不起作用

时间:2015-04-01 12:56:28

标签: java logging log4j log4j2

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

所以我配置了一个smtp appender:

<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记录器(捕获所有包中的所有错误)的正确方法是什么,以便查看错误之前/之后发生的事情?

1 个答案:

答案 0 :(得分:1)

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

我不认为SMPT appender 需要任何先前的非ERROR事件,但您可以尝试这样做:

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

如果问题仍然存在,请在log4j2 Jira问题跟踪器上提出一张票。