我在使用以下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
的日志我确定配置的布局有一个简单的问题,但我似乎无法找出它是什么。
答案 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的所有日志记录事件。