2014-10-05 60 views
0

我需要非常簡單的文本文件記錄。我只會追加線條。從不改變現有的或刪除它們。如果它是XML文件,綁定到網格以查看它們會更容易。但文本文件和xml文件仍然存在問題,因爲它們在文件系統中。在線程安全的aspnet中記錄XML或文本文件

在web服務器中會附加日誌條目時出現文件鎖定。也可能在閱讀時所以這個方法必須是線程安全的。同時,多個實例可以將日期寫入文件。

我知道有一些第三方工具,如serilog等,但我想知道:

我怎麼可以追加(不改變)線不用注意文件鎖定到文本文件(或XML文件)?

如果我讀取XML文件到數據集,添加一個新的行並保存爲XML我會使用其他實例所做的其他條目。

如果我用streamwriter打開一個文本文件並向它附加一行,其他實例將會出現鎖定錯誤。

我再次從管理面板獲取日誌列表,文件將被鎖定,實例不會追加日誌。

什麼想法?

+0

*無關於文件鎖*你不能。絕對不能。不。不可以。您可以做的是創建一個在後臺運行的單個線程,該線程從集合中獲取項目並將其寫入磁盤,並以讀/寫方式鎖定對該集合的訪問。或者只是使用諸如NLog之類的多線程安全日誌框架之一。 – Will 2014-10-05 16:30:23

回答

1

經過漫長的研究時間和實驗後,我發現使用Nlog對我來說是最好的選擇。最重要的是使用它的人非常高興。我創建了一個小例子頁面,每次調用它時都會寫入一個日誌並對其進行測試。我有一個多線程應用程序,一次又一次調用此示例頁面。如果速度足夠快,那麼我看不到線程的計數數量。至今沒有提出任何問題。

所以,我會堅持Nlog。

最好。