NLog 4.0忽略规则

时间:2015-07-26 20:08:26

标签: nlog

我的应用程序正在使用如下所示配置NLog.config的NLog。它还使用RavenDB数据库,默认情况下使用活动的NLog设置进行日志记录。

它会产生大量污染日志的DEBUG和INFO消息。我确实想记录ERROR和WARN消息。 RavenDB创建的所有记录都来自以Raven开头的命名空间。

我创建了如下所示的规则。基本上有一个最终规则,可防止来自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>

1 个答案:

答案 0 :(得分:4)

显然NLog 4中存在逻辑更改。它不会将来自Raven命名空间的消息标记为Warn final的级别。

http://nlog-project.org/2015/06/09/nlog-4-has-been-released.html

因此,规则必须更改为将Raven.*命名空间中的邮件maxlevel="INFO"发送到null目标。