从一个appender过滤记录器而不是另一个

时间:2012-10-30 13:56:06

标签: java logging log4j appender

我的日志记录配置中有两个appenders。其中一人在ERROR活动上发送电子邮件。

一个我无法控制的类,可以发送ERROR个消息。所以我仍然想要这些消息,但不是appenders

这是关于我的文件(简化为与此相关的内容,afaics):

<appender name="Logfile">...</appender>
<appender name="sendMailOnError">...</appender>

<logger name="spammingClass">
    <level value="info"/>
</logger>

<root>
   <level value="debug"/>
   <appender-ref ref="Logfile"/>
   <appender-ref ref="sendMailOnError"/>
</root>

所以,我的猜测是我可以在sendMailOnError中以某种方式排除spammingClass,但我不知道如何。

顺便说一下。我使用Java,但我不想为此编写自己的Filter类。

2 个答案:

答案 0 :(得分:3)

是的,通过指定spammingClass的附加程序并设置false的可加性:

<logger name="spammingClass" additivity="false">
    <level value="info"/>
    <appender-ref ref="Logfile"/>
</logger>

答案 1 :(得分:-1)

您可以使用可加性,在您的示例中将spammingClass记录器更改为:

<logger name="spammingClass" additivity="false">
    <level value="info"/>
</logger>

它会起作用。