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

Ras*_*ack 4 logging log4net filter

我想过滤掉包含指定字符串的消息.我用过,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>
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*old 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>
Run Code Online (Sandbox Code Playgroud)