非常に頻繁に、特定のおしゃべりなロガーからのログを特定のレベルまで除外したいと考えています。残念ながら、次のルールの最初のルールは、そのロガーのすべてのレベルで最終的なものであるため、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<=LogLevel.Warn" action="IgnoreFinal" />
</filters>
</logger>
<logger name="*" minlevel="Info" writeTo="default" />
しかし、構文は醜く、特に長さと条件式をエスケープする必要があります。
これは非常に一般的な要件のように思えるので、何か見落としているのではないかと思います。
Silverlight で nlog を使用していますが、それは問題ではないと思います。