NLog和最终规则

时间:2013-05-17 17:51:38

标签: .net nlog

我经常要将日志从特定的聊天记录器中排除到某个级别。不幸的是,以下第一条规则对于该记录器的所有级别都是最终的,因此第二条规则(这只是我的默认规则)不会记录任何内容:

<logger name="ChattyLogger" maxlevel="Warn" writeTo="blackhole" final="true" />

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

一种可能性是使用过滤器:

<logger name="ChattyLogger" writeTo="blackhole">
  <filters>
    <when condition="level&lt;=LogLevel.Warn" action="IgnoreFinal" />
  </filters>
</logger>

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

但是语法很难看,特别是长度和逃避条件表达式的需要。

由于这似乎是一个普遍的要求,我想知道我是否忽视了某些事情。

我在Silverlight下使用nlog,但我认为这不重要。

1 个答案:

答案 0 :(得分:8)

试试这个:

<logger name="ChattyLogger" maxlevel="Warn"/>
<logger name="ChattyLogger" minlevel="Error" final="true" writeTo="default"/>
<logger name="*" minlevel="Info" writeTo="default" />