2013-05-17 7 views
12

Очень часто я хочу исключить ведение журнала из определенного чат-регистратора до определенного уровня. К сожалению, первая из следующих правил является окончательным для всех уровней этого регистратора, так что второе правило (это просто мое правило по умолчанию) ничего не войти в него: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, но я полагаю, что это не имеет значения.

ответ

7

Попробуйте это:

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

Великий ответ, но, безусловно, первая строка ничего не делает, и может быть удален? –

Смежные вопросы