これは私の問題です.2つの異なるファイル(エラーと通常の情報)をC#アプリケーションとlog4netでログインしたいのですが、log4netは、異なるレベルの2つのファイルをログに記録します。
private readonly ILog log = LogManager.GetLogger("GENERAL-LOG");
と:ロギング用に別のクラスに
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date THREAD [%thread] %logger: %message%newline"; //%-5level
patternLayout.ActivateOptions();
RollingFileAppender infoRoller = new RollingFileAppender();
infoRoller.AppendToFile = true;
infoRoller.File = @"logs\";
infoRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
infoRoller.MaxSizeRollBackups = 3;
infoRoller.Layout = patternLayout;
infoRoller.DatePattern = @"IN\FO\_yyyy-MM-dd.\lo\g";
infoRoller.StaticLogFileName = false;
infoRoller.ActivateOptions();
hierarchy.Root.AddAppender(infoRoller);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
:XMLでは、私は、コードからそれをやりたい、これは私が1つのファイルの設定ログが見つかり源であります
Logger.Setup();
log.Debug("Configurazioni caricate con successo.");
コードが機能します。他のクラスから
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date THREAD [%thread] %logger: %message%newline"; //%-5level
patternLayout.ActivateOptions();
RollingFileAppender infoRoller = new RollingFileAppender();
infoRoller.AppendToFile = true;
infoRoller.File = @"logs\";
infoRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
infoRoller.MaxSizeRollBackups = 3;
infoRoller.Layout = patternLayout;
infoRoller.DatePattern = @"IN\FO\_yyyy-MM-dd.\lo\g";
infoRoller.StaticLogFileName = false;
infoRoller.ActivateOptions();
hierarchy.Root.AddAppender(infoRoller);
//ADDED CODE
RollingFileAppender errorRoller = new RollingFileAppender();
errorRoller.AppendToFile = true;
errorRoller.File = @"logs\";
errorRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
errorRoller.MaxSizeRollBackups = 3;
errorRoller.Layout = patternLayout;
errorRoller.DatePattern = @"ERROR_yyyy-MM-dd.\lo\g";
errorRoller.StaticLogFileName = false;
errorRoller.ActivateOptions();
hierarchy.Root.AddAppender(errorRoller);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
}
:
は今、私は2ログを取得するには、この変更を行った
private readonly ILog log = LogManager.GetLogger("GENERAL-LOG");
private readonly ILog elog = LogManager.GetLogger("ERROR-LOG");
Logger.Setup();
log.Debug("prova scrittura in file1");
elog.Error("prova errore scrittura in file2");
結果:両方のログファイルは二つのメッセージが書き込まれます。
ご迷惑をおかけしますようお願い申し上げます。
どうもありがとう、しかし、コンパイラ書き込みこのエラーをありがとう:「ロガー」は「AddAppender」となし拡張メソッドの定義が含まれていません「AddAppender」タイプ「ロガーの最初の引数を受け入れます'が見つかりました(使用するディレクティブまたはアセンブリ参照がありませんか?) – Jujjizzu
Log4net Loggerの代わりにIntellisenseがそのクラスを参照するように、Setup2()メソッドを持つクラスにLoggerと名前を付けたという問題があると思います。あなたのクラスの名前を何かに変更し、解決策を試してみてください。呼び出すクラス名はLoggerではないので、上のコードは私にとってうまくいきます。 –