如何使log4net.Filter.StringMatchFilter与acceptOnMatch设置为false一起使用

时间:2013-02-12 09:26:35

标签: log4net episerver

我刚刚开始使用log4net,并且在使用字符串进行过滤方面存在一些问题。

我正在尝试删除我的log4net日志文件中的EPiServer特定日志记录,因为我对它不感兴趣。

我为appender提供了以下log4net配置:

        <filter type="log4net.Filter.LevelRangeFilter">
           <levelMin value="DEBUG" />
        </filter>

        <filter type="log4net.Filter.StringMatchFilter">
            <stringToMatch value="EPiServer" />
            <acceptOnMatch value="false" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />

我只有一个根记录器。此配置不会停止EPiServer日志记录。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试将StringMatchFilter更改为LoggerMatchFilter

<filter type="log4net.Filter.LoggerMatchFilter">
  <loggerToMatch value="EPiServer" />
  <acceptOnMatch value="false" />  
</filter>

StringMatchFilter过滤日志消息的内容,其中LoggerMatch过滤Logger的类Name或partial Namespace

答案 1 :(得分:1)

您应该删除该行

<filter type="log4net.Filter.DenyAllFilter" />

来自docs

  

您可以将此过滤器添加到过滤器链的末尾以进行切换   默认情况下“除非另有说明,否则接受所有”过滤   除非另有说明,否则“拒绝一切”的行为。

除非使用<filter>

<acceptOnMatch value="true" />内明确列入白名单,否则会有效地撤消拒绝所有邮件的逻辑