この例に従って、 log4net をプログラムで構成しています。ただし、情報とエラーを別々にログに記録したいので、セットアップ方法を次のように変更しました。
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
patternLayout.ActivateOptions();
RollingFileAppender info = new RollingFileAppender();
info.AppendToFile = true;
info.File = @"c:\Info\infolog.log";
info.Layout = patternLayout;
info.MaxSizeRollBackups = 5;
info.MaximumFileSize = "1GB";
info.RollingStyle = RollingFileAppender.RollingMode.Size;
info.StaticLogFileName = true;
info.ActivateOptions();
info.Name = "info";
RollingFileAppender error = new RollingFileAppender();
error.AppendToFile = true;
error.File = @"c:\Error\errorlog.log" ;
error.Layout = patternLayout;
error.MaxSizeRollBackups = 5;
error.MaximumFileSize = "1GB";
error.RollingStyle = RollingFileAppender.RollingMode.Size;
error.StaticLogFileName = true;
error.ActivateOptions();
error.Name = "error";
hierarchy.Root.AddAppender(info);
hierarchy.Root.AddAppender(error);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Info;
hierarchy.Configured = true;
}
私のコードでは、以下のように初期化しました
public class myclass
{
ILog errorLog ;
ILog infoLog ;
public myclass()
{
errorLog = LogManager.GetLogger("error");
infoLog = LogManager.GetLogger("info");
}
public void LogMessage()
{
infoLog.Warn("warn message");
errorLog.Error("Error message");
}
}
問題は、infoLog に出力したものが、infolog.log ファイルと errorlog.log ファイルの両方に出力され、その逆も同様であることです。構成の何が問題になっていますか?