2012-10-06 117 views
10

是否可以從5個不同進程寫入同一個日誌文件?Log4Net從多個進程寫入文件

我正在使用Log4Net進行日誌記錄,但似乎只有一個進程正在寫入文件,當我關閉此進程時,第二個進程正在寫入。

我想大家一起寫。

如何?

回答

15

如果你想要寫從多個進程的單個文件中添加MinimalLock作爲LockinModel<appender>節點:

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

當心這會對性能產生一定的影響。

5

雖然@ Erwin的建議在大多數情況下都適用,但您應該重新考慮更好的架構是否有助於提高性能。

例如,Microsoft IIS服務器有許多工作進程正在運行,每個工作進程都通過命名管道向IIS服務進程發送日誌條目。並且只有IIS服務進程纔有權寫入日誌文件。通過這種方式,工作進程不需要鎖定日誌文件,服務進程可以緩存條目並批量寫入。

這是很容易遵循IIS的方法,並取得良好的表現。沒有文件鎖。

(更新:現在可以使用LogMaster4Net,它實現了基於UDP的這種架構。)