我们的一个WebApis最近停止了输出日志。在跟踪文件中,我们收到以下消息:
log4net:ERROR XmlHierarchyConfigurator:在[log4net.Repository.Hierarchy.Hierarchy]上找不到属性[filter]来设置对象
配置文件如下所示,我假设错误中的过滤器与配置中的过滤器相同,所以我不确定为什么找不到它。 我升级到最新版本的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>
奇怪的是它工作了一段时间,停止了,升级了,工作了一段时间,然后停止了。我不知所措,可能会发生什么变化而使其在任何时候都无法正常工作。
在此先感谢您的帮助。
答案 0 :(得分:0)
您的配置无效。
只能在附加程序中定义过滤器。
Filters元素只能定义为
的子元素 元素。
将过滤器定义移至附加器,如下所示。
<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尝试保持尽可能多的继续。