15

非常に頻繁に、特定のおしゃべりなロガーからのログを特定のレベルまで除外したいと考えています。残念ながら、次のルールの最初のルールは、そのロガーのすべてのレベルで最終的なものであるため、2 番目のルール (これは単に私の既定のルールです) では何もログに記録されません。

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

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

1 つの可能性は、代わりにフィルターを使用することです。

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

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

しかし、構文は醜く、特に長さと条件式をエスケープする必要があります。

これは非常に一般的な要件のように思えるので、何か見落としているのではないかと思います。

Silverlight で nlog を使用していますが、それは問題ではないと思います。

4

1 に答える 1