2012-01-15 44 views
1

嗨,簡單的手工和ASP.NET MVC異常日誌記錄?

我正在尋找一種簡單的方法來記錄異常在我的ASP.NET MVC應用程序的數據庫。我已經看過「異常管理應用程序塊」,但是我找不到任何關於如何在ASP.NET MVC中處理這個問題的簡單明瞭的表述?

Maby我應該儘可能趕上異常,然後將其記錄到數據庫,但我不知道如何在ASP.NET MVC中做到這一點。在WindowsForms中,有不同的事件(如unexpectedException)來監聽我可以登錄的位置,是否有類似於ASP.NET MVC的內容?

BestRegards

EDIT1:我發現了一個名爲ELMAH http://code.google.com/p/elmah/但林不知道這是否是一個很好的解決方案的工具,如果它與ASP.NET MVC效果很好。

然後我也發現這篇文章http://www.davidjuth.com/asp-net-mvc-error-handler.aspx,看起來很簡單,但我也不知道這是否是正確的路?

回答

3

使用ELMAH,它可用on NuGet。它將在Web應用程序中記錄未處理的異常,並提供一個界面來查看它們。它可以登錄到各種存儲機制,包括XML和SQL數據庫,它也可以通過電子郵件發送錯誤。它基本上是解決方案,用於記錄ASP.Net應用程序(包括WebForms和MVC)中的異常。

如果您在MVC應用程序中使用ELMAH,則應存在some integration points。這些可以通過安裝ELMAH.Mvc packagefrom NuGethandled pretty well in one shot

+0

聽起來不錯!我會試試這個!我看了一下Alexander Beletsky的文章,並且他寫道最頂級的內容:更新:Elmah.MVC現在以NuGet包的形式發佈。無需閱讀那篇博文,只需安裝即可。他是否在引用文章或其他博客文章?我需要遵循他的指示嗎?還是僅僅安裝包裝? – Banshee 2012-01-15 10:59:46

+0

此外,請不要認爲我的網站將在虛擬主機上運行,​​因此我無法完全控制服務器。除了我的網站之外,我無法在服務器上安裝額外的軟件。我還能使用ELMAH嗎? – Banshee 2012-01-15 11:01:34

+0

是的,你可以,你不需要在服務器上安裝任何東西。如果您不熟悉它,NuGet只是在構建項目時引用依賴關係的簡單方法。您可以下載ELMAH並自行參考。無論哪種情況,只需將ELMAH.dll與您的Web項目一起部署 - 無需在服務器上安裝(如果要登錄到SQL Server,您當然需要訪問它)。 – 2012-01-15 11:10:26

3

我建議你看看NLog的日誌記錄異常:http://nlog-project.org - 你可以配置它將異常轉儲到數據庫中很容易。

至於MVC錯誤日誌記錄 - 這個問題Error Handling in ASP.NET MVC有一些非常好的解決方案。

+0

啊哈我之前聽說過nlog,我會看看它。 elmah與nlog相比如何?看起來elmah處理所有異常,記錄它們併爲在線視圖提供監視器?這聽起來不錯,但我不知道它是否適用於ASP.NET MVC?我還發現這篇文章看起來很清晰直截了當:http://www.davidjuth.com/asp-net-mvc-error-handler.aspx。任何與這些經驗? – Banshee 2012-01-15 10:35:37

+0

@SnowJim:看到我的答案和鏈接的文章。 davidjuth.com上的文章已過時。 ELMAH與MVC協同工作。與NLog相比:ELMAH只會記錄所有異常情況,而不僅僅是安裝ELMAH軟件包,但它不會記錄任何其他情況。使用NLog,您將負責所有日誌記錄調用,但當然您可以記錄任何內容 - 它也不會提供Web UI來查看日誌。 ELMAH很可能是你想要的,它會記錄你想要在Web應用程序中登錄的HttpContext的大量細節。 – 2012-01-15 10:39:00

+0

從未使用ELMAH - 但我已將Castle Windsor IoC容器和ASP .NET MVC與NLog結合使用,並且它的工作非常順利。我會嘗試他們兩個,看看你更喜歡哪一個 - 有那麼多的日誌框架,他們都很好 - 往往歸結爲個人喜好 - 只要確保你使用了一個很好地坐在你喜歡做事情和那麼摩擦力就會消失,您可以繼續編寫您需要的應​​用程序! – kmp 2012-01-15 10:41:29