NLog 4.0 忽略规则的最终属性
NLog 4.0 ignores final attribute on a rule
我的应用程序正在使用配置有 NLog.config
的 NLog,如下所示。它还使用默认情况下使用活动 NLog 设置进行日志记录的 RavenDB 数据库。
它会产生大量污染日志的 DEBUG 和 INFO 消息。我确实想记录 ERROR 和 WARN 消息。 RavenDB 创建的所有记录都来自以 Raven
.
开头的命名空间
我创建了如下所示的规则。基本上有一个 final 规则可以防止来自 Raven.* 命名空间的 INFO/DEBUG 消息被写入日志文件。在我将 NuGet 包升级到 NLog 4.0 之前,一切都运行良好。现在所有 RavenDB 消息都写入日志文件。
这是一个错误还是 NLog 版本之间发生了一些配置更改?
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="AsyncWrapper" queueLimit="1000" overflowAction="Discard">
<target
name="file"
xsi:type="File"
layout="${longdate} - ${level:upperCase=true} - ${identity} - ${logger} - ${message}${onexception:inner=${newline}${exception:format=tostring}${newline}}"
fileName="D:/Logs/AppName/${shortdate}.log" />
</target>
</targets>
<rules>
<logger name="Raven.*" writeTo="file" minlevel="Warn" final="true" />
<logger name="*" writeTo="file" minlevel="Debug" />
</rules>
</nlog>
显然 NLog 4 中有一个逻辑变化。它不再标记来自 Raven 命名空间的级别低于 Warn
final 的消息。
http://nlog-project.org/2015/06/09/nlog-4-has-been-released.html
因此必须更改规则才能将 Raven.*
命名空间中 maxlevel="INFO"
的消息发送到 null
目标。
我的应用程序正在使用配置有 NLog.config
的 NLog,如下所示。它还使用默认情况下使用活动 NLog 设置进行日志记录的 RavenDB 数据库。
它会产生大量污染日志的 DEBUG 和 INFO 消息。我确实想记录 ERROR 和 WARN 消息。 RavenDB 创建的所有记录都来自以 Raven
.
我创建了如下所示的规则。基本上有一个 final 规则可以防止来自 Raven.* 命名空间的 INFO/DEBUG 消息被写入日志文件。在我将 NuGet 包升级到 NLog 4.0 之前,一切都运行良好。现在所有 RavenDB 消息都写入日志文件。
这是一个错误还是 NLog 版本之间发生了一些配置更改?
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="file" xsi:type="AsyncWrapper" queueLimit="1000" overflowAction="Discard">
<target
name="file"
xsi:type="File"
layout="${longdate} - ${level:upperCase=true} - ${identity} - ${logger} - ${message}${onexception:inner=${newline}${exception:format=tostring}${newline}}"
fileName="D:/Logs/AppName/${shortdate}.log" />
</target>
</targets>
<rules>
<logger name="Raven.*" writeTo="file" minlevel="Warn" final="true" />
<logger name="*" writeTo="file" minlevel="Debug" />
</rules>
</nlog>
显然 NLog 4 中有一个逻辑变化。它不再标记来自 Raven 命名空间的级别低于 Warn
final 的消息。
http://nlog-project.org/2015/06/09/nlog-4-has-been-released.html
因此必须更改规则才能将 Raven.*
命名空间中 maxlevel="INFO"
的消息发送到 null
目标。