之前大部分系统日志记录是使用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

关于elmah.axd的安全設定

Elmah添加日志文件访问权限

利用Elmah和Google入侵的快感

http://www.cnblogs.com/liquanchun/archive/2012/12/21/2827724.html

ELMAH 使用的更多相关文章

  1. C#组件系列———又一款日志组件:Elmah的学习和分享

    前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了“规矩”,今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往,园子里每年这个时候 ...

  2. 三分钟集成elmah xml 格式日志到mvc站点

    1.通过nuget安装Elmah ELMAH on XML Log 会自动在web.config 文件中添加配置内容,默认不允许远程访问,日志访问路径是 Elmah.axd,不记录500错误 2.修改 ...

  3. ElasticSearch+NLog+Elmah实现Asp.Net分布式日志管理

    本文将介绍使用NLOG.Elmah结合ElasticSearch实现分布式日志管理. 一.ElasticSearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布 ...

  4. 使用 Elmah一些要注意的问题

    http://www.cnblogs.com/apsnet/archive/2012/04/28/2474730.html 1. Elmah使用后,在发布时,要区分IIS6和IIS7 ,IIS6下 H ...

  5. Elmah 日志记录组件

    http://www.cnblogs.com/jys509/p/4571298.html 简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理 ...

  6. ELMAH入门

    简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理程序,是一种应用广泛的错误日志工具是完全可插拔.它可以动态添加到一个正在运行的ASP.NE ...

  7. 【工具推荐】ELMAH——可插拔错误日志工具

    今天看到一篇文章(构建ASP.NET网站十大必备工具(2)),里面介绍了一个ELMAH的错误日志工具,于是研究了一下. ELMAH 是 Error Logging Modules and Handle ...

  8. Using sql azure for Elmah

    The MSDN docs contain the list of T-SQL that is either partially supported or not supported.  For ex ...

  9. 【手把手教你Elmah】如何在MVC.NET项目中在线查看【错误日志】

     一.  在NuGet下载Elmah.MVC dll文件!  或者点击下载dll文件,并且引用客户端. 二.配置WebConfig <sectionGroup name="elmah& ...

  10. ELMAH+MVC4+SQLite 错误日志

    任何程序我想无论是在调试开发阶段还是上线运营阶段,都能够使人“放心”,不要出什么意外,也不要玩什么心跳:那就需要比较到位和及时的异常与错误日志模块. 本文将简要描述ELMAH.MVC4与SQLite这 ...

随机推荐

  1. MacBook Pro 一月使用体验

    从 2013 年开始,就特别想买 MBP,终于在 2015 年的尾巴用上了 MBPR.原本是要在使用一周后写一份使用体验的,但因为懒,现在拖到一个月了,刚好现在也是2016年的一月,就把标题改成一月使 ...

  2. ajax 遍历json一维数组

    $.each(data,function(index,value){}data必须是Object类型index是数组的下标value可以是一个对象 function myonclick() { var ...

  3. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    mybatis与springboot集成的时候,报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManag ...

  4. 安装新操作系统 Windows 路径设置 节省C盘空间

    1.QQ个人文件夹设置到D盘,D:\ProgramData\QQ 2.IE收藏夹设置到D盘,IE缓存设置到D盘 例如我想把收藏夹默认的保存路径改到D:\study下.关闭Internet Explor ...

  5. Spring MVC 自定义视图

    实现View import org.springframework.stereotype.Component; import org.springframework.web.servlet.View; ...

  6. Mysql 触发器 A表记录到B表

    1:查询出需要的列名 备用 #列名 select COLUMN_NAME from information_schema.columns where TABLE_SCHEMA='yunpiaobox_ ...

  7. Qt-状态机

    //以下示例是QT示例中的appchooser例子,使用状态机来进行图标的交互. #include <QtCore> #include <QtWidgets> class Pi ...

  8. JAVA 模拟瞬间高并发

    如何模拟一个并发?当时我的回答虽然也可以算是正确的,但自己感觉缺乏实际可以操作的细节,只有一个大概的描述. 当时我的回答是:“线程全部在同一节点wait,然后在某个节点notifyAll.” 面试官: ...

  9. ResponseUtil数据传递至前端

    package com.java1234.util; import java.io.OutputStream; import java.io.PrintWriter; import javax.ser ...

  10. The 2018 Nobel prizesThe Nobel prize for economics is awarded for work on the climate and economic growth

    The 2018 Nobel prizesThe Nobel prize for economics is awarded for work on the climate and economic g ...