XmlHierarchyConfigurator 出现 Log4net 错误。缺少过滤器属性

标签 log4net log4net-configuration log4net-filter

我们的一个 WebApi 最近停止输出日志。在跟踪文件中,我们收到以下消息:

log4net:错误 XmlHierarchyConfigurator:找不到属性 [filter] 在 [log4net.Repository.Hierarchy.Hierarchy] 上设置对象

配置文件如下所示,我假设错误中的过滤器与配置中的过滤器相同,所以我不确定为什么找不到它。 我升级到了 log4net 的最新版本,并解决了几天的问题,然后我们再次收到“找不到属性 [过滤器]”错误。在此期间配置文件根本没有改变。

<configuration>
  <configSections>
    <section name="log4net"
        type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingFileAppender"/>
    </root>
    <filter type="log4net.Filter.LevelMatchFilter">
      <acceptOnMatch value="true" /> <!--change to false to exclude info logs -->
      <levelToMatch  value="INFO" />
    </filter>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/Log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1001KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level: %message%newline" />
      </layout>
    </appender>
  </log4net>

</configuration>

很奇怪,工作了一段时间,停止了,升级,工作了一段时间,停止了。我不知道什么可能会改变让它停止工作。

预先感谢您的帮助。

最佳答案

您的配置无效。
过滤器只能在附加程序中定义。

documentation提及:

Filters elements may only be defined as children of <appender> elements.

将过滤器定义移动到附加程序,如下所示。

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <filter type="log4net.Filter.LevelMatchFilter">
        <acceptOnMatch value="true" /> <!--change to false to exclude info logs -->
        <levelToMatch  value="INFO" />
    </filter>
    <file value="Logs/Log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="1001KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level: %message%newline" />
      </layout>
</appender>

(我无法解释为什么错误只在某些/随机时间发生;可能它在配置时(例如,网站/应用程序域回收后)(重新)发生)...
最后,Log4net 尝试尽可能地继续下去。

关于XmlHierarchyConfigurator 出现 Log4net 错误。缺少过滤器属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446928/

相关文章:

c# - Log4net自定义过滤器不过滤

Log4Net - 文件进程锁

Log4Net 从日志中过滤掉 INFO,只显示 DEBUG & ERROR

c# - 每个类实例的唯一日志文件

.net - log4net是否支持在日志消息中包括调用堆栈

javascript - 通过 PageMethods 和 AJAX 调用将 JQuery 脚本错误记录到 ASP.NET 服务器

c# - 进程无法访问文件 "MyFile.log",因为它正被另一个进程使用

log4net - 有损日志记录,错误后还会收到一些消息吗?