ELMAH 使用
2013-11-20 19:05 时空印记 阅读(2459) 评论(0) 编辑 收藏 举报之前大部分系统日志记录是使用log4net、ObjectGuy Framework、NLog 等工具记录到文本或数据库。 更强大的工具可以使用 ELMAH。
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等方式通知错误信息给相关人员。
目前ELMAH已有:
ELMAH Core Library (no config)--没有任何配置的ELMAH的核心库(错误日志模块和处理程序), 这个只包含程序库。如果你已经有了自定义ELMAH配置或者你想新建一个,你可以依赖并使用这个“核心”软件包。
ELMAH--依赖于核心的程序库,是一个“入门”的库。
ELMAH on MS SQL Server --能通过WEB.CONFIG快速配置把错误日志记录保存到Microsoft SQL Server 数据库上。
ELMAH on XML Log -- 记录到XML
ELMAH.MVC -- 支持ASP.NET MVC 模式
接着我们新建一个 ASP.NET 空 Web应用程序,再通过管理NuGet程序包来安装 ELMAH
安装完毕之后,在解决方案中将看到引用中 多了 "Elmah" 和 package.config 配置文件,这是NuGet 自动配置完成,不需要手动配置(当然需要自定义和其他设置的还是需要手动配置)。
新建一个测试页面: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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?