您的位置:首页 > 编程语言 > ASP

ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇

2013-01-12 18:48 776 查看
转:/article/5113224.html

最近在研究几个ASP.NET的开源项目时,发现都在使用ELMAH来作为记录整个应用程序的错误日志,于是拿来小研究了一下,在这里和各位分享一下,如果有使用过的,请多指教。

对于ELMAH,将用三篇系列文章来介绍:

概念篇

基本应用篇

高级应用篇

基本应用篇

1.ELMAH初体验

先来快速体验一下ELMAH应用于一个项目的最少操作是多么简单吧。(以开发环境下的ASP.NET程序为例)

步骤1:用VS2010开发平台打开需要添加ELMAH程序的ASP.NET项目。使用NuGet(一个用于维护.NET FrameWork常用类库的VS2010扩展,当然ELMAH也在其中,NuGet的介绍及其安装请看参考文章1),添加ELMAH。即:

菜单选择:工具-Library Package Manager-Add Library Package Reference…,打开添加类库界面。

web.config<configSections>
<sectionGroup name="elmah">
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<elmah>
<errorLog type="Elmah.MemoryErrorLog, Elmah"/>
</elmah>[/code]

但这种方式应该只用于测试阶段,运行于生产环境中的系统,不应该使用此方式,这主要是基于此种方式的工作原理导致的。

内存存储,顾名思义,将日志记录于操作系统分配给应用程序的内存中。应用程序的内存是与应用程序域相关的,这可以保证每个应用程序只能获取和记录属于自己的日志信息。但是,一旦应用程序重启,之前记录的信息将会消失。最简单的例子,如果你用这种方式调试呢,默认是用ASP.NET Development Server作为web服务器,如果这时停止此服务器,则就满足上述条件了(如下图)。另外,断电,发布后IIS的重启等问题,都会导致记录的信息丢失。因此,这种方式只能用于测试用。(当其他方式不知为何不能使用,可以采用此方式来判别一下问题)





简单总结一下各种方式:

数据库存储方式,配置相对麻烦,但对于大规模日志的记录,效率最好;
文件存储方式,配置相对简单,每日志一个文件,当数据量很大后,可能会导致巨量文件带来的效率问题;
内存存储,配置最简单,但是鉴于以上原因,不应使用于生产环境。

3.错误日志记录查看

按照如上步骤,日志已经被记录到相应介质中了。那么接下来就是如何查询这些日志信息。

实际上第一节中,就简单介绍了查询界面(第四张图),是在没啥可讲的,点点就知道了。这里还是介绍一下吧。





四个红框,将这个页面分为四个区域:

区域1,菜单区,包括五个内容:

RSS FEED 也就是rss种子,也就是订阅这一日志的rss连接。
RSS DIGEST 也是rss种子,但是显示的是最近15天的日志信息。
DOWNLOAD LOG 下载日志,以cvs格式,导出日志为文件。
HELP 帮助,连接到ELMAH的主页。
ABOUT 关于,点击后,显示当前ELMAH的版本,源代码信息,以及一个检查是否为最新版的按钮。

区域2,分页,选择相应数字,即可分页显示日志。

区域3,内容区,分为7列:

Host 导致报错信息的访问主机名。
Code 错误的HTTP状态码。
Type 错误类型。
Error 错误的信息。其中再次点击Details,可以详细查看报错信息,与本文图3类似。
User 导致报错信息的访问主机的用户。
Date 发生错误的日期。
Time 发生错误的时间。

区域4,版本与版权声明信息等。

注:

从这一篇的介绍可以看出,ELMAH的功能还是很多的,不过也存在一些问题需要解决:

ELMAH配置的数据库连接字符串无法加密,或者无法指定为加密了的connectionstring;
ELMAH不能在指定的关系型数据库中自动创建相应对象;
日志内容是增长的,但ELMAH没有提供清空日志的功能;
查询功能比较薄弱,不能提供过滤条件。

参考文章:

1. 《ASP.NET MVC 3.0学习系列文章—NuGet and ASP.NET MVC 3.0》

2.《ELMAH的web.config详细配置(v1.1)》

3. 《数据库连接参数 网址》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: