最近的 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