2010-02-03 109 views
3

我正在構建一個C#/ Asp.Net(FW 2.0)Web應用程序,我想知道應該在哪裏存儲我的錯誤日誌條目。我應該在哪裏存儲錯誤日誌?

我可以把它寫在服務器上的一個文件上,但這看起來並不適合我。這將與數據庫的想法不一致。

另一個明顯的答案是在數據庫上,但是如果我沒有任何與數據庫的連接會發生什麼。如果客戶端與數據庫發生連接錯誤,我該怎麼辦(因爲服務器和數據庫顯然不在同一臺計算機上)?

您的建議非常感謝。

比你

編輯:我說的是基本的錯誤記錄在這裏,請不要參考這樣的事情像log4net的大框架。

回答

2

有一個回退機制是一個非常有效的方案。記錄到Windows事件日誌通常是不現實的,因爲分析日誌並不容易,就像關係數據庫一樣。但是,當數據庫發生故障時,允許將事件記錄到事件日誌中並不是豪華選項IMO。

這種情況是我構建日誌框架的原因之一(我不會引用它,就像你請求的那樣)。它支持一個名爲'fallbackProvider'的概念,它允許在主記錄器失敗的情況下將事件記錄到備用記錄器中。當你編寫自己的日誌記錄機制時,你可以接受這樣一個概念。

祝你好運。

+0

你能否給我提供關於你的框架的更多信息。存儲在事件日誌中的錯誤很難找回,如您所說,這不是一種奢侈的選擇。 – ALOToverflow 2010-02-03 15:23:43

+0

它被稱爲CuttingEdge.Logging,位於CodePlex上:http://logging.codeplex.com。它包含用於寫入MS SQL數據庫和Windows事件日誌的記錄器。在構建ASP.NET應用程序時,請查看此配置示例: http://logging.codeplex.com/wikipage?title=Configuration&referringTitle=Home#Complete_ASP_NET_configutation_example。 – Steven 2010-02-03 15:45:56

6

系統事件日誌中有相應的事件源(記錄通道)

http://support.microsoft.com/kb/307024

+0

我們在家做的是使用系統事件日誌。這樣當我們啓動時,我們可以推出SCOM並實時監控問題。 – 2010-02-03 15:15:43

-1

- 系統事件查看器
- 你可以緩存你的錯誤給當地&輕量級數據庫文件(可以是源碼/ SQL精簡) ,那麼當連接可用時,您將其發送到服務器

0

我猜你真的有三種選擇:

  1. 使用小型數據庫將所有錯誤日誌存儲在本地計算機上,使用像SQLlite或SQLServer Compact這樣的輕量級重量。
  2. 將它保存到一個可以查看它的平面文件(xml,或者你有什麼)。
  3. 直接發送到事件日誌。 (我可能會這樣做)。
3

與記錄到數據庫相比,log4net或nlog不是「大框架」。保持簡單,這兩個提供正是你需要的,只有很少的增長時間。

1

將其存儲在事件日誌中;畢竟它是爲此目的而設計的!它是大多數人會查找錯誤,消息和警告的地方,無論他們對應用程序瞭解多少。

企業庫提供了一個記錄框架,您可以使用Enterprise Library。這使您可以根據配置文件更改記錄事件的方式/位置,因此無需在事件記錄的位置做出決定。

除此之外,如果使用異常處理塊,你也可以登錄錯誤事件日誌以最小的努力

0

日誌,數據庫和XML作爲備用,asp.net帳戶需要燙髮登錄錯誤eventviewer這可能不是一個好主意的Web服務器,除非它絕對neccessasy。

0

如果你願意考慮一個簡單的商業產品,看看Gibraltar。它在本地存儲日誌,然後在連接可用時將其上傳到Web服務。然後將這些日誌編入嵌入式數據庫中,並使用分析工具查看您需要的任何詳細級別的錯誤和其他信息。

我發現你是學生,弗蘭克。直接給我發電子郵件,討論我們爲您提供免費許可證的可能性。

+0

我來看看,謝謝。 – ALOToverflow 2010-02-15 12:55:41

+0

以下是一些可能感興趣的鏈接: 全新入門視頻我剛剛完成上週末:http://www.gibraltarsoftware.com/Try/Getting-Started.aspx 描述新版本的博客文章我們幾天前剛剛發佈:http://rocksolid.gibraltarsoftware.com/development/gibraltar-2-1-1-released – 2010-02-22 21:00:18