您可以在log4net中过滤Logger级别吗?

时间:2009-04-15 11:53:49

标签: filter log4net logging

我想过滤掉包含指定字符串的邮件。我使用log4net.Filter.StringMatchFilter,但这仅适用于appender。

我想在Logger级别上过滤该消息。这些方面的东西:

<logger name="MyLogger.WebServices">
    <level value="Debug" />
    <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="do not log me" />
        <acceptOnMatch value="false" />
    </filter>
    <appender-ref ref="file" />
    <appender-ref ref="debug" />
</logger>

这种方式真的有可能吗?或者有不同的方法来处理这种情况。

1 个答案:

答案 0 :(得分:11)

过滤器仅用于appender。如果您需要过滤掉几个appender的事件,可以使用forwardingappender进行预过滤。这样就可以避免在几个appender上复制和粘贴相同的过滤器。

您的示例如下所示:

<appender name="screeningAppender" type="log4net.Appenders.ForwardingAppender">
    <filter type="log4net.Filter.StringMatchFilter">
            <stringToMatch value="do not log me" />
            <acceptOnMatch value="false" />
    </filter>

    <appender-ref ref="file" />
    <appender-ref ref="debug" />
</appender>

<logger name="MyLogger.WebServices">
    <level value="Debug" />
    <appender-ref ref="screeningAppender" />
</logger>
相关问题