2010-01-04 46 views
5

我有一堆現有的客戶端/服務器應用程序,目前正在徘徊。偶爾,客戶需要添加某種類型的Web界面來訪問部分數據。這些通常是自定義的,但有些是「通用的」;但是每個人在自己的虛擬機中都有自己的「實例」。錯誤日誌數據庫 - 對於很多應用程序

我要的是捕捉和記錄所出現的任何這些虛擬機中的任何錯誤集中的區域。

我consitering創建一個新的數據庫,並建立一個WCF服務,以使這些Web應用程序的創建在我的中央數據庫,以及對本地事件日誌日誌條目。

那是一個糟糕的設計?

更新

WebApps的是在2003/IIS6和2008/IIS7,建於ASP.NET。許多實例都位於一對Web服務器上,但許多實例將部署到單獨的VM。

+0

你能提供一些關於你使用的平臺的更多細節嗎?這聽起來像Windows + IIS ...? – Wim 2010-01-04 18:50:01

回答

4

這正是我們如何實現它。

我們數據庫中的3個表:

Event Types 
------------ 
EventType int 
EventDescription varchar(50) 


MonitoredSystems 
--------------- 
SystemID int 
SystemName varchar(50) 
SystemDescription text 


Events 
------- 
RecordID bigint 
EventTime datetime 
SystemID int FK 
EventText text 
EventType int FK 
Acknowledged bit 

我們也颳起了一個網站,我們可以查看的事件。 「已確認」字段讓我們設置一個視圖名稱「未確認的關鍵問題」,以便我們能夠快速查看任何新問題,並在我們閱讀時承認它們。

我們知道還有其他的工具,有能爲我們做到這一點,但沒有一個是容易整合我們自己的本土版本,而我們現在在每一個我們構建的應用程序使用它。我們還有其他一些自定義功能,這裏我沒有提到其他工具沒有提供的功能。

所以我認爲你的想法是好的。如果你自己構建它,你可以自定義它以按照你想要的方式工作。但是,我會推薦至少查看諸如Log4net等工具。

+0

我知道這是一個非常古老的主題,但我很想知道更多關於您的實現以及它在過去幾年如何得到增強。例如,你是否只在你的應用程序中插入一段代碼,從類繼承,還是你必須在許多try-catch塊中寫一個這樣的東西來調用它?謝謝。 :) – Chiramisu 2012-08-10 17:01:16

+0

簡短版本是我們在每個應用程序的代碼中都有WriteToError日誌調用。代碼簡潔 - 這是對Web服務的調用。我們總是在global.asax(webapps)中放入全局錯誤處理程序,對於WinForms,我們處理System.Windows.Forms.Application.ThreadException和AppDomain.CurrentDomain.UnhandledException事件。我們通常在每個應用程序的靜態類中設置錯誤日誌功能,以便其他類可以簡單地調用「OverseerLogger.LogError(ErrorMessage,System.Environment.MachineName,SeverityLevel)來簡單地記錄消息。 – David 2012-08-14 18:10:29

3

你應該看看ELMAH(錯誤日誌記錄模塊和處理程序)(http://code.google.com/p/elmah/)與軌道中的一個的異常記者(http://aspexceptionreporter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35343)的組合時可以給你的企業覆蓋面廣的錯誤報告在一個集中的位置的組合。

+0

Orbit One的例外記者+1。我以前沒有見過,看起來很光滑。 – 2010-01-04 19:16:53

+0

+1。 Orbit One的例外記者看起來很像我們想出的本土應用程序。我喜歡。 – David 2010-01-04 20:09:58

0

如果您經常登錄(debug/info/warning),請確保您的RPC調用是異步完成的。

我推薦一個更靈活的數據結構;

Events 
------- 
RecordID bigint 
EventTime datetime 
EventLevel text 
SystemID text 
EventText text 
EventType text 
Acknowledged bit 

EventProperties 
------- 
RecordID bigint 
key text 
value text 

的EventProperties允許記錄應用程序來記錄可能是有用的任何信息,而不必預先定義這樣的性質。請注意,SystemID沒有限制,允許在沒有配置的情況下添加系統。

相關問題