Очень часто я хочу исключить ведение журнала из определенного чата-регистратора до определенного уровня. К сожалению, первое из следующих правил является окончательным для всех уровней этого регистратора, так что второе правило (которое просто мое правило по умолчанию) не будет записывать из него ничего:
<logger name="ChattyLogger" maxlevel="Warn" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Info" writeTo="default" />
Одна из возможностей заключается в использовании фильтров:
<logger name="ChattyLogger" writeTo="blackhole">
<filters>
<when condition="level<=LogLevel.Warn" action="IgnoreFinal" />
</filters>
</logger>
<logger name="*" minlevel="Info" writeTo="default" />
Но синтаксис уродлив, особенно длина и необходимость избежать выражения условия.
Так как это кажется таким общим требованием, мне интересно, не заметил ли я что-то.
Я использую nlog под Silverlight, но я полагаю, что это не имеет значения.