以前大部分系統日誌記錄是使用log4net、ObjectGuy Framework、NLog 等工具記錄到文本或數據庫。 更強大的工具可使用 ELMAH。html
ELMAH(The Error Logging Modules And Handlers),直譯過來就是「錯誤日誌模塊和處理」,它提供了一個用於集中記錄和通知錯誤日誌的機制。它是專用於ASP.NET的徹底可熱插拔的錯誤日誌記錄工具。其特色就是無需ASP.NET程序從新編譯,便可經過配置web.config(或machine.config)來實現整個應用程序甚至是IIS中全部ASP.NET應用程序的錯誤日誌記錄工做。ELMAH既支持ASP.NET Web Forms 又支持 ASP.NET MVC。你能夠對ELMAH進行配置來存儲各類不一樣的錯誤(XML文件,事件日誌,Access數據庫,SQL數據庫,Oracle數據庫,或者計算機 RAM)。除了提供一個界面用於查詢日誌詳細信息外,還能夠經過E-MAIL、RSS等方式通知錯誤信息給相關人員。web
目前ELMAH已有:sql
ELMAH Core Library (no config)--沒有任何配置的ELMAH的核心庫(錯誤日誌模塊和處理程序), 這個只包含程序庫。若是你已經有了自定義ELMAH配置或者你想新建一個,你能夠依賴並使用這個「核心」軟件包。數據庫
ELMAH--依賴於核心的程序庫,是一個「入門」的庫。安全
ELMAH on MS SQL Server --能經過WEB.CONFIG快速配置把錯誤日誌記錄保存到Microsoft SQL Server 數據庫上。ide
ELMAH on XML Log -- 記錄到XML
工具
ELMAH.MVC -- 支持ASP.NET MVC 模式post
接着咱們新建一個 ASP.NET 空 Web應用程序,再經過管理NuGet程序包來安裝 ELMAH 測試
安裝完畢以後,在解決方案中將看到引用中 多了 "Elmah" 和 package.config 配置文件,這是NuGet 自動配置完成,不須要手動配置(固然須要自定義和其餘設置的仍是須要手動配置)。google
新建一個測試頁面:TestTrace.aspx 在頁面拖放一個文本框和一個按鈕
運行:
接下來咱們經過 「~/elmah.axd」 來訪問ELMAH 記錄的日誌錯誤
顯示: No errors found.
沒有錯誤發現是由於還根本沒有寫CODING。 接着我在BUTTON 事件下面寫入如下代碼:
protected void Button1_Click(object sender, EventArgs e) { var txtValue = Convert.ToInt32(TextBox1.Text); Response.Write("輸入的值是:" + txtValue); }
再次運行 輸入 「ABC」 點擊 Button , 這時候該頁面必定報錯:字符串沒法轉換成INT類型。
若是我自定義錯誤頁面,這時候立馬跳到錯誤頁面 而不知道發生了什麼錯誤。 這是經過「~/elmah.axd」 來看會發現記錄的錯誤有
點擊 「Details...」 查看詳細
注:在實際應用中對 「~/elmah.axd」訪問權限應進行訪問限制,具體參考ELMAH:https://code.google.com/p/elmah/。
相關連接:
http://blogs.msdn.com/b/scott_hanselman/archive/2011/07/26/nuget-sql-server-compact-elmah.aspx
http://www.cnblogs.com/liquanchun/archive/2012/12/21/2827724.html