構成ファイルが変更されたときにログ レベルを変更するアプリケーションを作成しようとしています。
class Program
{
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
XmlConfigurator.ConfigureAndWatch(new FileInfo(@"log4net.config"));
do
{
log.Debug("Hello World!");
log.Info("I'm a simple log4net tutorial.");
log.Warn("... better be careful ...");
log.Error("ruh-roh: an error occurred");
log.Fatal("OMG we're dooooooomed!");
Thread.Sleep(1000);
} while (true);
}
私の設定ファイル:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\log-file.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="FATAL" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
私が理解している限り (間違っている場合は訂正してください)、watch 部分は、ファイルの変更時に XML 構成が再ロードされることを意味します。プログラムの実行中にデバッグ レベルを変更しようとしましたが、プログラムを再起動した場合にのみレベルが変更されます。
同じ問題で、メインで構成する代わりに AssemblyInfo で使用しようとしまし[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
たが、変更は監視されません。
洞察をいただければ幸いです。
タル