log4net - Log4net追加器阈值不起作用

标签 log4net log4net-configuration

我在我的应用程序的log4net配置中设置了logfileAppenderconsoleAppender。我希望日志文件附加程序只写ERROR消息及以上,而控制台附加程序写DEBUG及以上。

我的配置是:

<log4net debug="false">

<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net" >
  <param name="File" value="log.txt" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%d %M - %m%n" />
  </layout>
  <threshold value="ERROR"/>
</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"   >
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d %m%n" />
  </layout>
</appender>


<root>
  <priority value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
  <appender-ref ref="LogFileAppender" />
</root>

</log4net>


我发现ERROR和DEBUG都输出到我的日志文件追加器中。如何将其限制为仅ERROR?

最佳答案

还要注意,记录器中的level标记与thresholdLevelMatchFilter的工作方式不同。

Level指示将实际生成的日志语句。您可以在代码中进行测试。

另一方面,Threshold过滤掉所有低于阈值的日志消息。

这意味着具有高于最高记录器级别的阈值是没有意义的。我已经多次看到如何设置INFO级别(因为这是大多数追加程序将使用的级别),然后创建一个具有DEBUG阈值的追加程序。然后,当在附加程序上实际上没有出现DEBUG消息时,您会感到惊讶。

关于log4net - Log4net追加器阈值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1171258/

相关文章:

c# - ASP.NET 缓存的 aspx 页面和 IIS 日志

asp.net - log4net 在应用程序关闭之前不会写入日志条目

asp.net - 使用 ASP.NET 请求用户获取 Log4net 日志条目

c# - 如果我使用 Spring AOP 横切关注点 + log4net 进行日志记录,如何结束单例对象队列

c# - 在 log4net 中禁用特定级别

log4net - 使用多个 log4net 文件记录器

log4net - 通过 XML 文件*和*代码配置 log4net appender

datetime - Log4Net - 添加时间记录日期时间

log4net - RollingFileAppender,滚动后,它不再追加

c# - Log4net 缓冲区不起作用