2009-09-08 122 views
23

多個應用程序,我們有一個單獨的SQL日誌從多個應用程序的存儲錯誤。我們已經爲每個應用程序禁用了elmah.axd頁面,並且希望有一個新的應用程序專門顯示來自所有向常見SQL日誌報告錯誤的應用程序中的錯誤。使用單Elmah.axd與單DB日誌

截至目前,儘管對所有錯誤的應用程序使用常見的SQL日誌,它只會顯示當前的應用程序錯誤。有沒有人做過這個?可能需要調整elmah代碼中的什麼內容?

+1

謝謝你以清晰的方式提出這樣一個很好的問題,你已經把我的話與時間機器。現在差不多6 - 7年了。 – AKS 2015-12-14 07:26:53

回答

30

我的「SQL日誌」假設你的意思是MSSQL服務器......如果是這樣,可能實現你想要將編輯保存你的錯誤,在SQL Server數據庫中創建存儲過程什麼的最簡單的方法。

爲了得到錯誤列表中,ELMAH DLL調用ELMAH_GetErrorsXML PROC與應用程序名作爲參數,則PROC過濾用WHERE [Application] = @Application條款的回報。

剛從ELMAH_GetErrorsXML PROC去除WHERE子句,所有錯誤都應該與應用無關的返回。

爲了正確獲取單個錯誤記錄,您必須執行與ELMAH_GetErrorXML proc相同的過程,因爲它也會根據應用程序進行過濾。

這當然會影響任何應用程序檢索出該特定數據庫的錯誤,但我在你的情況下,假設你永遠只能有一個,所以這應該是不錯的。

警告:我沒有試過,所以我不能保證結果...

+0

正確!我會看看sproc的修改。 – RSolberg 2009-09-09 15:54:13

+1

@ E.King,謝謝你的回答像魅力一樣...... – AKS 2015-12-14 07:30:02

2

是的,它很容易的工作。但是,您無法在Elmah/Default.aspx中看到應用程序名稱。我還沒有發現它是否可疑 - 只顯示一列。

+1

這是真的。該頁面的佈局在ErrorLogPage.cs代碼中定義,因此要添加另一列,您必須下載源代碼,進行更改並重新編譯。 http://code.google.com/p/elmah/source/browse/trunk/src/Elmah/ErrorLogPage.cs – 2009-12-10 00:30:22

4

這不是覆蓋默認ELMAH處理廠,這樣它會通過應用程序過濾ELMAH日誌的一個問題。我編寫了一個示例應用程序,演示如何使用MySql執行此操作:http://diagnettoolkit.codeplex.com/releases/view/103931。你也可以檢查一下post on my blog,我在那裏解釋它是如何工作的。

+0

+1 - 這是應該如何完成的。乾淨簡單,無需修改原始DDL腳本和Elmah源代碼。博客文章解釋了這一切。幹得好,先生! – 2014-09-06 15:26:58

+0

我剛剛實現了這一點。很好用! – 2014-11-04 22:22:08

+0

這是一個不錯的選擇。然而,缺點是你一次只能看到一個應用程序的錯誤,你必須事先知道應用程序的名稱。如果你想看到所有應用程序中的錯誤列表(這是我對問題的解釋),但這不會做到,除非我只是看不到那件事。 – 2015-03-05 14:55:55