Elmah 取自Error Logging Modules and Handlers縮寫,ASP.NET錯誤記錄模組,它可被動態的加入ASP.NET web應用程式,而不需重新編譯或發行,就能在ASP.NET發生例外錯誤(Exception)時,將錯誤訊息、程式碼位置、Query String、Cookie、Client IP、登入身分... 等等偵錯資訊鉅細靡遺地保存下來,並且還提供了網頁查詢介面,可直接透過網站調閱每一則錯誤的細節。以下藉由圖文說明安裝步驟
安裝步驟:
步驟1(安裝ELMAH)
1.開啟NuGet Packages Manager,於NuGet Packages Manager中去輸入ELMAH查詢相關套件。
2.將ELMAH項目安裝,如果是MVC專案Elmah.MVC裝起來,如果需要產XML的Log就裝ELMAH on XML Log,所以在此建議將
ELMAH、ELMAH Core Library(no config)、ELMAH.MVC、ELMAH on XML Log四個裝起來。
3.此時會選擇安裝的Projects只要選擇Web的專案就好。
4.安裝完ELMAH之後,自動會在Web.config的Section增加,此時ELMAH安裝設定完成。
※安裝完成後,看看方案總管,增加了「~/App_Data/Elmah.Errors」「~/Areas/Admin/」
※在此注意因為裝了ELMAH on XML Log所在在web.config多了<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/Elmah.Errors" />在這邊我是用SQL去記錄事件所以將這段註解
步驟2(安裝資料庫設定)
1. 先建立一個Elmah資料庫
2. 將前往elmah官網下載ELMAH-1.2-db-SQLServer.sql,並且執行
3. 設定資料庫連線
※ELMAH預設會讓所有人都可以看到ELMAH紀錄,由於錯誤紀錄記載了很多資訊,因此對網路安全有很大的威脅。
可透過<security allowRemoteAccess="0" />限定本機查詢
補充
設定限定非匿名使用者或特定使用者才能存取,Web.Config修改如下
<location path="elmah.axd">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
可參考http://kevintsengtw.blogspot.com/2011/10/aspnet-mvc-elmah-2.html
參考文獻
http://blog.darkthread.net/post-2011-03-10-elmah-axd-security.aspx
http://kevintsengtw.blogspot.com/2011/10/aspnet-mvc-elmah-1.html
http://kevintsengtw.blogspot.com/2011/10/aspnet-mvc-elmah-2.html