0

ローリング ログ ファイルに書き込むコンソール アプリケーションがあります。問題は、アプリケーションが複数のプロセスから呼び出される可能性があり、同時に呼び出される可能性があることです。アプリケーションは 1 つのログ ファイルに書き込みます。現在、MinimalLock 設定で log4net を使用して調査しています。

<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />

しかし、別のインスタンスが同じファイルに書き込もうとしているときに、あるインスタンスからのログ メッセージによってロール オーバーが発生すると、問題が発生する可能性があることを読みました。

この動作をサポートする別のフレームワーク、または適切な回避策はありますか?

4

1 に答える 1

1

試す<lockingModel type="log4net.Appender.FileAppender+InterProcessLock"

情報をログに記録するロガー静的クラスを作成するため、次のコードはスレッド セーフになります。

public static class Logger
{
    private static readonly Object obj = new Object();

    private static ILog _appLog = null;
    static Logger()
    {
        XmlConfigurator.Configure();
    }

    public static void Log(string loggername)
    {
        lock (obj)
        {
            _appLog = LogManager.GetLogger(loggername);
            _appLog.Error(....);
        }
    }
}
于 2012-05-03T15:44:39.833 に答える