使用log4net丢弃范围内的多个日志级别

使用log4net丢弃范围内的多个日志级别,log4net,Log4net,假设我将log4net记录器的minLevel和maxLevel分别设置为FATAL和DEBUG,但在某些情况下,我希望禁用WARN级别中写入的日志项,并保持该范围内的所有其他级别处于活动状态 是否可以使用日志级别的“离散”级别,而不是使用minLevel和maxLevel指定范围 我认为这应该很简单,但我还没有找到任何处理此问题的log4net文档或示例。您可以在appender上使用LevelMatchFilter 例如: ... 这个例子只会打印调试;信息和错误消息。可以根据您的需要轻

假设我将log4net记录器的
minLevel
maxLevel
分别设置为
FATAL
DEBUG
,但在某些情况下,我希望禁用
WARN
级别中写入的日志项,并保持该范围内的所有其他级别处于活动状态

是否可以使用日志级别的“离散”级别,而不是使用
minLevel
maxLevel
指定范围


我认为这应该很简单,但我还没有找到任何处理此问题的log4net文档或示例。

您可以在appender上使用
LevelMatchFilter

例如:


...
这个例子只会打印调试;信息和错误消息。可以根据您的需要轻松定制


注意:不要忘记末尾的
DenyAllFilter

使用LevelRangeFilter


将log4net过滤器组合在一起以获得所需输出的方式很酷。默认情况下,所有日志条目都有一个“中立”过滤器配置,而log4net默认情况下会记录所有中立的条目

LevelRangeFilter
将要做的是,如果条目的级别在范围内,它会将过滤器配置设置为“接受”(或者如果
acceptOnMatch
参数设置为
false
,它会将所有不在范围内的条目标记为“拒绝”

LevelMatchFilter
会将
levelToMatch
参数中指定的过滤器的配置设置为“接受”,除非
acceptToMatch
设置为
false
,否则它会将匹配项设置为“拒绝”,不匹配项将保留为以前的状态

因此,您可以使用两个过滤器的组合来获得您想要的:

<appender name="FilteredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
       <levelMax value="FATAL" />
       <levelMin value="ERROR" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="WARN" />
        <acceptOnMatch value="false" />
    </filter>
</appender>


这将允许您轻松地打开和关闭警告级别。范围之外的所有条目都已标记为“拒绝”,此处的
LevelMatchFilter
也会将警告级别条目标记为拒绝,因此不需要
DenyAllFilter

嘿!谢谢你的快速回复。可以通过编程来完成吗?我只找到了一种方法来更改记录器的(根)日志级别,而不是每个appender。抱歉,我错过了您的评论。在程序上也应该是可能的。在这里,您可以看到如何访问所有Appender:嘿,因为这是自然使用的表单,我尝试了这个选项,但它迫使我也以致命和错误之间的级别记录消息,这是我不想要的(即使错误和致命相邻,原则仍然适用)。无论如何谢谢你!