hyp*_*pet 5 java logging log4j smtpappender log4j2
我正在使用log4j2-beta9,我有以下配置(部分):
<Appenders>
<SMTP name="Mailer" suppressExceptions="false"
subject="${subject}" to="${receipients}" from="${from}"
smtpHost="${smtpHost}" smtpPort="${smtpPort}"
smtpProtocol="${smtpProtocol}" smtpUsername="${smtpUser}"
smtpPassword="${smtpPassword}" smtpDebug="false" bufferSize="20">
<PatternLayout>
<pattern>%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %m%n</pattern>
</PatternLayout>
</SMTP>
<Async name="AsyncMailer">
<AppenderRef ref="Mailer"/>
</Async>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="AsyncMailer" level="error"/>
</Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)
使用此配置,我只收到1(一)错误消息的电子邮件.如何配置log4j2以接收1条错误消息和N条以前的LEVEL = INFO消息?
提前致谢.
目前这是不可能的:SMTP appender有一个缓冲区,它在通过电子邮件发送之前捕获日志事件,但它只捕获为目标级别配置的事件(在您的示例中为ERROR).如果您将其更改为INFO,您将收到所有INFO级别日志消息的电子邮件通知(而不仅仅是ERROR级别消息之前的消息).
您可以在log4j 问题跟踪器或log4j用户邮件列表中将其作为功能请求提出.
更正:我错了,错了,错了!
STMP Appender确实有一个缓冲区,但它意味着捕获ERROR日志事件之前的最后一个X(默认为512)INFO,DEBUG,TRACE级别的消息.所以它应该像你期望的那样工作(就像log4j-1.x SMTP appender一样).
SMTP Appender将在收到ERROR(或更严重)级别的日志事件时触发电子邮件.所以,在你的配置,你应该不会只发送错误级别的日志事件,这个附加器(或你会错过它之前的信息,调试,跟踪事件).
在您的配置中,更改<AppenderRef ref="AsyncMailer" level="error"/>为<AppenderRef ref="AsyncMailer"/>.
这应该解决问题.如果您仍然遇到问题,其他人报告了类似问题,并且显然通过在配置中添加ThresholdFilter找到了解决方法:
<Appenders>
<SMTP name="Mailer" suppressExceptions="false"
subject="${subject}" to="${receipients}" from="${from}"
smtpHost="${smtpHost}" smtpPort="${smtpPort}"
smtpProtocol="${smtpProtocol}" smtpUsername="${smtpUser}"
smtpPassword="${smtpPassword}" smtpDebug="false" bufferSize="20">
<ThresholdFilter level="debug" onMatch="NEUTRAL" onMismatch="DENY" />
<PatternLayout>
<pattern>%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %m%n</pattern>
</PatternLayout>
</SMTP>
<Async name="AsyncMailer">
<AppenderRef ref="Mailer"/>
</Async>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="AsyncMailer" />
</Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6031 次 |
| 最近记录: |