NLog - 使用最终/黑洞的过滤器

时间:2018-05-21 14:53:48

标签: nlog

我想设置一种方法来轻松地从包含所有日志文件中包含/排除某些日志消息。在我的代码中,我根据" Context"记录了消息。属性,然后我将在条件中包含/排除消息时使用。

这是我的设置:

<logger writeTo=""
        final="true">
  <filters>        
  <when condition="equals('${event-properties:item=Context}', 'Database')"
        action="Log"/>
  </filters>
</logger>

<logger name="*"
        minlevel="Trace"
        writeTo="default"/>

我希望我可以使用Context =&#39;数据库&#39;包含/排除任何消息。在第一个记录器中,然后将writeTo属性更改为包含消息(即writeTo =&#34;默认&#34;)或排除(即writeTo =&#34;&#34;)。

问题似乎是第一个记录器包含所有消息,并且因为final设置为true,所以不允许任何消息跟进catch all logger?只有与记录器1中的条件匹配的日志才会按预期写入,但是所有日志都已经完成&#34;最终确定&#34;通过它。

我的配置有什么问题?

1 个答案:

答案 0 :(得分:0)

也许请尝试这样做(删除final="true",而是使用action="LogFinal"

<targets>
  <target xsi:type="Null" name="BlackHole" />
</targets>
<rules>
  <logger writeTo="BlackHole">
    <filters>        
       <when condition="equals('${event-properties:item=Context}', 'Database')"
         action="LogFinal"/>
    </filters>
  </logger>
</rules>

看起来您必须指定一个实际目标才能使自定义记录器过滤器工作(不依赖于LogLevel)。