3

我刚刚开始使用 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 日志记录。

我究竟做错了什么?

4

2 回答 2

3

您应该删除该行

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

文档

您可以将此过滤器添加到过滤器链的末尾,以从默认的“除非另有指示,否则全部接受”过滤行为切换到“除非另有指示,否则全部拒绝”行为。

这有效地反转了拒绝所有消息的逻辑,除非在<filter>using 中明确列入白名单<acceptOnMatch value="true" />

于 2015-12-31T15:32:42.493 回答
2

尝试将您的 StringMatchFilter 更改为 LoggerMatchFilter

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

StringMatchFilter 过滤日志消息的内容,其中 LoggerMatch 过滤 Logger 的类名称或部分命名空间

于 2013-02-12T10:25:12.807 回答