2012-03-25 48 views
1

我將處理項目到客戶端進行測試階段,項目使用ASP.NET MVC3構建..我需要的是將所有異常保存到持久位置 - SQL數據庫 -在處理C#異常時保存在數據庫中的字段

和我有一些問題..

  1. 我應該保存在數據庫中的哪些領域? (消息,跟蹤等)
  2. 我已經看到人們保存內部異常,但有時我的異常有空內部異常。
  3. 什麼是處理錯誤並保存到數據庫的最佳位置。 (在Global.asax中或在web.config中定義自定義錯誤頁,並與server.getLastError獲得最後一個錯誤)

回答

4

我應該保存在數據庫中的哪些領域? (味精,跟蹤等)

一切你可以,如果可能的話:

  • 類型
  • 消息
  • 堆棧跟蹤

我看到有人救內部異常,但有時我的異常有空內部異常。

而且有些會有多個嵌套的。你應該保存你所能做的一切,海事組織。你的結構是怎樣取決於你的,但你總是可以添加最內層的那個,然後用最外層的外鍵來包含最內層的那個,等等,向外發展。

什麼是處理錯誤並保存到數據庫的最佳位置。

恐怕不能幫到你。儘管如此,你可能想要考慮這樣做,排隊它們。當異常本身可能是數據庫錯誤時,這尤其重要 - 如果可以建立一個隊列(當然是最大值),以便一旦恢復任何數據庫問題,就可以存儲錯誤然後,可能是有用的。或者可能首先將它們轉儲到磁盤,並定期將該日誌上傳到數據庫。

1
  1. 正如Jon Skeet所說,您存儲的字段越多,診斷問題的數量就越多。就個人而言,如果您有能力這樣做(數據庫空間和性能考慮因素),我會去序列化異常並將其放入「XML」類型列中。這也將消除第二個問題,因爲內部異常也會被序列化。儘管採用這種方法,但所有自定義異常都應該能夠正確序列化。
  2. 我建議尋找錯誤記錄器的免費源代碼,如Elmah以獲得基本想法。