如何提高一个记录器的日志级别

How to raise log level on one logger

我有以下 nlog 配置。我只想不记录来自 Meazure.Core.SiteContext.

的任何非错误消息
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <extensions>
        <add assembly="NLog.Targets.GrowlNotify" />
        <add assembly="Gelf4NLog.Target" />
    </extensions>
    <targets>
        <target name="file" xsi:type="File" fileName="${basedir}/log.log" layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${exception:format=Type,Message,StackTrace:innerFormat=Type,Message,StackTrace:maxInnerExceptionLevel=10:innerExceptionSeparator=\n\t}" maxArchiveFiles="1" archiveAboveSize="1000000" />
        <target name="dev" xsi:type="Console" />
        <target name="growl" type="GrowlNotify" host="" password="" />
    </targets>
    <rules>
        <logger name="Meazure.Core.SiteContext" minlevel="Error" writeTo="file" final="true" />
        <logger name="*" minlevel="Trace" writeTo="dev" />
        <logger name="*" minlevel="Debug" writeTo="file" />
        <logger name="*" minLevel="Info" writeTo="growl" />
    </rules>
</nlog>

没用!我仍然在 file

中收到这样的消息
2016-03-23 15:08:58.0125|DEBUG|Meazure.Core.SiteContext|Closed connection at 2016-03-23 3:08:58 PM -07:00

我做错了什么?

最终规则适用于组合:

  • loggername
  • 最小等级

因此具有 loggername "Meazure.Core.SiteContext" 和 minlevel "error" 的事件不会进入记录器规则 2-4。但是如果级别是"debug",它就会。

完成此操作的最佳方法是使用 Null target

新目标:

  <target name="null" xsi:type="Null" />

规则:

 <logger name="Meazure.Core.SiteContext" minlevel="Error" writeTo="file" final="true" />
 <logger name="Meazure.Core.SiteContext" writeTo="null" final="true"/>
 <logger name="*" minlevel="Trace" writeTo="dev" />
 <logger name="*" minlevel="Debug" writeTo="file" />
 <logger name="*" minLevel="Info" writeTo="growl" />