我想过滤掉包含指定字符串的消息。我用过 log4net.Filter.StringMatchFilter
但这仅适用于附加程序。
我想已经在 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>
这种方式真的可能吗?或者有没有不同的方法来处理这种情况。
最佳答案
过滤器仅用于附加程序。如果您需要过滤掉多个 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>
关于filter - 您可以在 log4net 中过滤记录器级别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751368/