處理我的web應用程序中的錯誤 我正在創建一個日誌文件,該文件將在global.asax的Application_Error()事件中創建 以及基於日期(1每天)在asp.net中創建錯誤日誌文件
我正在考慮場景發生錯誤,在來自多個用戶的時間 文件中獲取寫入相同的情況下,在同一時間
所以它可能會引發該文件已被另一個用戶 它可能例外就像我不確定
任何人可以幫助應對這樣的場景
千恩萬謝
處理我的web應用程序中的錯誤 我正在創建一個日誌文件,該文件將在global.asax的Application_Error()事件中創建 以及基於日期(1每天)在asp.net中創建錯誤日誌文件
我正在考慮場景發生錯誤,在來自多個用戶的時間 文件中獲取寫入相同的情況下,在同一時間
所以它可能會引發該文件已被另一個用戶 它可能例外就像我不確定
任何人可以幫助應對這樣的場景
千恩萬謝
使用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();
}
}
即使你的答案是不壞,什麼都沒有做與實際問題和解決問題,而且必須是評論沒有回答。 – Aristos
@Aristos - 我想不出你爲什麼不使用ELMAH,NLog或者甚至是log4net。爲什麼你甚至會開始考慮重新發明輪子? – Kev
@Kev好吧,接受你說的話,但是這是關於如何寫入文件並避免衝突,而不是如何記錄錯誤的一般問題。這就是爲什麼我認爲這可能是一個評論,因爲實際上並沒有解決問題,只是提出一個圖書館。換句話說不知道答案,只知道有一個庫這樣做了一個錯誤日誌。 – Aristos