【发布时间】:2017-10-14 15:24:15
【问题描述】:
我有一个 C# Framework 4.5.2 项目,使用 log4net v2.0.8(通过 NuGet 安装),我已经阅读了至少十个不同但相似的问题,但没有一个能解决我的问题。当然,我可以成功写入日志附加程序,但过滤/阈值不起作用。我有一个记录器(使用 ROOT 或命名实例)并设置了不同的阈值/过滤器,这些阈值/过滤器应该指导实际日志记录使用特定的附加程序(即文件、db、smtp 等)。这样,某个级别的过滤器值可能只能由单个附加程序处理。对于测试,我只是试图获得警告及以上阈值以使用 ADO 附加程序,而文件附加程序记录信息(及以上)阈值。所以,当我测试一个信息日志方法时,它不应该在数据库中结束,但它总是这样。所以,不知何故我的配置错误。这只是我浏览过的几个,它们给了我洞察力,但不是解决方案:
- log4net-logging-of-two-different-levels-to-two-different-appenders-for-the-same
- log4net-appender-threshold-not-working
这里有一些代码:
配置:
<!--<root>
</root>-->
<logger name="Logger">
<appender-ref ref="LogFileAppender"/>
<appender-ref ref="AdoNetAppender"/>
</logger>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\temp\logging\derp.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %property{ProjectName} (%logger) - %message%newline" />
</layout>
<!--<threshold value="Info" />-->
</appender>
我尝试在记录器部分的 appender-ref 中设置阈值,我直接在 appender 中设置了它。我使用了 LevelMatchfilter,有 level 和 levelMin/levelMax(见下文)。 LevelRangeFilter,什么都没有。没有任何东西可以正常工作。
<filter type="log4net.Filter.LevelMatchFilter">
<levelMin value="Warning" />
<levelMax value="Fatal" />
</filter>
<threshold value="Warning" />
我尝试过合并 Evaluator,但不起作用。
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
大多数在线示例都是 5 年以上的,经常谈论 v1.2。新版本中是否有某些内容,或者我只是缺少其他内容,或者以错误的顺序进行操作?任何帮助表示赞赏。谢谢!
【问题讨论】:
标签: logging log4net-configuration threshold