【问题标题】:Log4Net Root config set-up is mixing file levels to appendersLog4Net 根配置设置将文件级别混合到附加程序
【发布时间】:2014-09-22 17:27:19
【问题描述】:

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

<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 的日志

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

【问题讨论】:

  • 我想这就是你要找的东西:link Cheers Martin [1]:stackoverflow.com/questions/1372435/…
  • 我相信这与我想要实现的目标相反。我的正在写入多个文件,我希望每个级别的日志都转到一个特定的文件。
  • 该帖子中还有另一个答案可以解释您想要什么? link。您必须调用 LogManager.GetLogger("SECTION")

标签: c# logging log4net log4net-configuration


【解决方案1】:

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

如果您想将每个级别过滤到一个附加程序,请在根目录和use a LevelMatchFilter on each appender 中声明所有附加程序,以便只有一个级别类型传递到每个附加程序。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    相关资源
    最近更新 更多