2012-06-16 44 views
2

處理我的web應用程序中的錯誤 我正在創建一個日誌文件,該文件將在global.asax的Application_Error()事件中創建 以及基於日期(1每天)在asp.net中創建錯誤日誌文件

我正在考慮場景發生錯誤,在來自多個用戶的時間 文件中獲取寫入相同的情況下,在同一時間

所以它可能會引發該文件已被另一個用戶 它可能例外就像我不確定

任何人可以幫助應對這樣的場景

千恩萬謝

回答

1

使用mutex鎖定你的寫作過程。我建議mutex,而不是lock(),因爲可以捕獲可能會引發錯誤的所有池/線程。

MSDN上大約有mutex和細節的例子:

http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx

一個簡單的例子

public void LogThis(string LogDetails) 
{ 
    var mut = new Mutex(true, "LogMutexName"); 

    try 
    { 
     // Wait until it is safe to enter. 
     mut.WaitOne(); 

     // here you open write close your file 
    } 
    finally 
    { 
     // Release the Mutex. 
     mut.ReleaseMutex(); 
    } 
} 
1

你可以只使用類似ELMAH它會給你相當不錯的錯誤日誌記錄。它在記錄方式和記錄方面非常靈活。你也可以用最少的努力將它添加到NuGet中。

或者看看NLog

+1

即使你的答案是不壞,什麼都沒有做與實際問題和解決問題,而且必須是評論沒有回答。 – Aristos

+1

@Aristos - 我想不出你爲什麼不使用ELMAH,NLog或者甚至是log4net。爲什麼你甚至會開始考慮重新發明輪子? – Kev

+1

@Kev好吧,接受你說的話,但是這是關於如何寫入文件並避免衝突,而不是如何記錄錯誤的一般問題。這就是爲什麼我認爲這可能是一個評論,因爲實際上並沒有解決問題,只是提出一個圖書館。換句話說不知道答案,只知道有一個庫這樣做了一個錯誤日誌。 – Aristos