最近的 MSDN 上介紹了一個利用 Http Module 和 Handler 實現的錯誤記錄模組 ELMAH((Error Logging Modules And Handlers)), 他可以記錄所有沒有處理的 ASP.net 程式異常, 不需要修改現有的代碼, 不需要重新編譯部署, 修改 Web.config 把dll 拷到bin 就好了. ELMAH不僅可以記錄下詳細的出現在用戶端著名的黃屏錯誤描述, 還包括伺服器變數, Cookie, 表單變數(預設的不在報告中顯示Cookie, 表單變數,但是可以自己修改擴充)等等其他東東.
錯誤記錄檔的查閱也非常的方便, 非常的棒, 更好的是, 居然還支援發布成 RSS 這樣就可以通過你喜歡的新聞閱讀器定時查詢閱讀啦,下面就是MSDN上的幾張圖:
圖1日誌列表
圖2查看詳細錯誤資訊
圖3 RSS方式的日誌資訊
ELMAH 可以很方便的擴充支援多種後端儲存方式, 它自身附帶支援2種方式 : SqlErrorLog (SQL Server 2000) 和 MemoryErrorLog (記憶體), 如果不能滿足你的需要還可以增加比如 XML, 其他資料庫等儲存方式哦.
剛剛說了只要修改 Web.config 拷一個dll , 連查看日誌需要訪問的 aspx 頁面都不需要, 純粹是通過 httpHandler 處理的,乾淨利落. 最大程度上不會破壞原來的系統.不喜歡可以隨時刪掉.
具體的技術實現和用法文章裡面都很詳細的, 而且開放了代碼, 大家可以在遵守許可前提下自由使用哦, 順便再學習一下 Http Module 和 Handler.
ELMAH 代碼可以在這裡下載
http://workspaces.gotdotnet.com/elmah
MSDN介紹文章在這裡
http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/elmah.asp