我在我的应用程序中使用 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/