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" />

Но синтаксис уродлив, особенно длина и необходимость избежать выражения условия.

Так как это кажется таким общим требованием, мне интересно, не заметил ли я что-то.

Я использую nlog под Silverlight, но я полагаю, что это не имеет значения.

Ответ 1

Попробуйте следующее:

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