2012-09-09 36 views
0

Log4Net對於web應用程序是安全的,因爲我知道log4net是線程安全的,但它不是一個過程安全的。在這種情況下,我們不能使用單個文件來編寫日誌。是否有其他解決方案?Log4Net for web服務

回答

0

假設您正在使用文件appender,那麼確實如此,DEFAULT行爲不會像您所說的那樣是過程安全的。但是還有其他兩個選項。

從log4net的DOCO:

的FileAppender支持可插拔的文件通過LockingModel屬性鎖定模式。由FileAppender.ExclusiveLock實現的默認行爲是在文件appender關閉之前獲得對文件的獨佔寫入鎖定。當appender正在編寫日誌記錄事件(FileAppender.MinimalLock)或通過使用命名系統範圍的互斥鎖(FileAppender.InterProcessLock)進行同步時,備用模型僅保留寫入鎖定。

配置線將是這樣的:

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

我會假定獨家是最高效的。

雖然你沒有問這個問題,可以編程使用此語法在配置設置文件/路徑:

<file type="log4net.Util.PatternString" value="%property{LogName}" /> 

然後設置LOGNAME六C#在你的設置有:

log4net.GlobalContext.Properties["LogName"] = fullPathToLogfile + afileName ; 
var configInfo = new FileInfo("configfilename.config");  
log4net.Config.XmlConfigurator.Configure(configInfo);