log4netはこれらのファイルを監視でき、app/web.configファイルを変更せずにレベルを変更できるため、log4netの外部構成ファイルを好みます。NServiceBusでそれを行うのに少し苦労しています。私は使用しています ここに私の外部設定ファイルがあります
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingFile" type="log4net.Appender.FileAppender">
<file value="C:\Logs\NServiceBusApplication.log" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
これを行う最も簡単な方法は、AssemblyInfo.cs に属性を配置することです。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "ApplicationName.log4net.xml", Watch = true)]
これは NServiceBus では機能しません (私は NServiceBus.Host.exe を使用しています)。それから電話してみた
SetLoggingLibrary.Log4Net(() => XmlConfigurator.Configure(log4netConfigUri));
前Configure.With
にEndpointConfig
。これにより、log4net は正しい場所から構成ファイルを読み取り、それを監視しないため、ログ レベルを変更してもアプリに反映されません。
次にappSettingsで試しました
<appSettings>
<add key="log4net.Config" value="ApplicationName.log4net.xml"/>
<add key="log4net.Config.Watch" value="True"/>
</appSettings>
繰り返しますが、log4net はこれを読み取り、続いて ApplicationName.log4net.xml を読み取りますが、まだ監視していません。
NServiceBus.Host.exe を使用している NServiceBus サービスで log4net を構成するにはどうすればよいですか?
- 外部構成ファイルから構成ファイルを読み取ります (つまり、log4net 構成は app.config 内にありません)。
- 外部構成ファイルへの変更が反映されるように、外部構成ファイルを監視します。