log4net を利用するサードパーティのアセンブリを使用しています。問題のアセンブリは、「情報」ログ レベルに頻繁に記録されます。これにより、アプリケーションに望ましくない多くのノイズが発生します。
特定のアセンブリに対して異なるログ レベルを構成する方法はありますか?
log4net を利用するサードパーティのアセンブリを使用しています。問題のアセンブリは、「情報」ログ レベルに頻繁に記録されます。これにより、アプリケーションに望ましくない多くのノイズが発生します。
特定のアセンブリに対して異なるログ レベルを構成する方法はありますか?
はい、そうです。構成ファイル内のロガー名に基づいて値を設定する方法があります。簡単にするためにファイルの残りの部分は省略していますが、ファイルには次のようなルート セクションが必要です。
ここで、他のロガー用に余分なセクションを追加するだけです。
例えば:
<root>
<level value="ERROR" />
<appender-ref ref="RollingFile" />
</root>
<logger name="ServiceLib">
<level value="DEBUG"/>
</logger>
これは、タイプを渡してロガーを作成している場合に機能します。名前は、クラスの名前空間に基づいています。このような:
private static readonly ILog log = LogManager.GetLogger(typeof(ServiceLib.MyWebService));
うまくいけば、これはあなたのために働く.
マニュアルから:
http://logging.apache.org/log4net/release/manual/configuration.html
アセンブリに対しては実行できませんが、そのアセンブリ内のパッケージに対しては実行できます。そのため、そのアセンブリ パッケージがすべて Com.Foo で始まる場合、次の構成は必要な処理を行い、ロギングを WARN レベル以上に制限するため、INFO ロギングは表示されません。
<log4net>
<!-- A1 is set to be a ConsoleAppender -->
<appender name="A1" type="log4net.Appender.ConsoleAppender">
<!-- A1 uses PatternLayout -->
<layout type="log4net.Layout.PatternLayout">
<!-- Print the date in ISO 8601 format -->
<conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<!-- Set root logger level to DEBUG and its only appender to A1 -->
<root>
<level value="DEBUG" />
<appender-ref ref="A1" />
</root>
<!-- Print only messages of level WARN or above in the package Com.Foo -->
<logger name="Com.Foo">
<level value="WARN" />
</logger>
</log4net>
使用する Lib がこの規則 (型名に基づくログ) に従っていない場合は、Lib がログに使用する文字列をログ ファイルで確認し、その文字列の "Com.Foo" を変更する必要があります。