2012-05-03 72 views
0

我有一個寫入滾動日誌文件的控制檯應用程序。問題在於應用程序可以被多個進程調用,並且有可能會同時調用它。該應用程序寫入一個日誌文件。我目前正在調查使用log4net的與MinimalLock設置:.NET的記錄框架支持多個應用程序寫入相同的滾動日誌文件?

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

,但我讀過,如果從一個實例的日誌消息導致翻車而另一個實例試圖寫入同一個文件的問題可能出現。

是否有另一個框架支持這種行爲,或者可能是一個合適的解決方法?

回答

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(....); 
     } 
    } 
} 
+0

從常見問題解答:「RollingFileAppender在滾動文件時完全忽略鎖定模型,滾動文件與此場景根本不兼容。」 – ilitirit

相關問題