Log4Net根配置设置正在将文件级别混合到附加程序中

本文关键字:混合 程序 文件 配置 设置 Log4Net | 更新日期: 2023-09-27 18:24:00

我在以下根配置设置中遇到了一些问题:

<root>
  <level value="INFO" />
  <appender-ref ref="file-appender-info" />
  <level value="WARN" />
  <appender-ref ref="file-appender-warn" />
  <level value="ERROR" />
  <appender-ref ref="file-appender-error" />
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppenderStandard" /> 
</root>

它正在将所有级别的日志写入所有文件Appenders。

例如info-log.txt有来自log.Warn和log.Error 的日志

我确信我对配置的布局有一个简单的问题,但我似乎找不到它是什么。

Log4Net根配置设置正在将文件级别混合到附加程序中

您在根中重复定义日志记录的级别,然后只保留最新的日志记录,并将其用于所有追加器。一个记录器只能存在一个级别。

如果要将每个级别筛选为一个appender,请在根中声明所有appender并在每个appender上使用LevelMatchFilter,以便每个appenders中只传递一个级别类型。

你可能对其他过滤器感兴趣,这里有一个来自上面链接的列表:

以下是log4net分发版中可用的过滤器列表:

  • log4net.Filter.LevelMatchFilter过滤与特定日志记录级别匹配的日志事件;或者,可以将其配置为过滤与特定日志记录级别不匹配的事件
  • log4net.Filter.LevelRangeFilter类似于LevelMatchFilter,不同之处在于它不是过滤单个日志级别,而是在连续级别的包含范围
  • log4net.Filter.LoggerMatchFilter根据发出日志事件的记录器对象的名称过滤日志事件
  • log4net.Filter.StringMatchFilter根据与日志消息匹配的字符串或正则表达式过滤日志事件
  • log4net.Filter.PropertyFilter根据与特定上下文属性匹配的值或正则表达式筛选日志事件
  • log4net.Filter.DenyAllFilter有效地删除了appender的所有日志事件