Log4Net Root配置设置是将文件级别混合到appender

时间:2014-09-22 17:27:19

标签: c# logging log4net log4net-configuration

我在使用以下root配置设置时遇到了一些问题:

<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>

它将所有级别的日志写入所有文件Appender。

例如,info-log.txt包含来自Log.Warn和Log.Error

的日志

我确定配置的布局有一个简单的问题,但我似乎无法找出它是什么。

1 个答案:

答案 0 :(得分:2)

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

如果要将每个级别过滤为一个appender,请在根目录中声明所有appender,并在use a LevelMatchFilter on each appender中声明只有一个级别类型传递到每个appender。

您可能对其他过滤器感兴趣,以下是从上面的链接中获取的列表:

  

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

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