您的位置:首页 > 其它

真正的热插拔开源的日志记录组件

2009-01-13 22:11 232 查看
  前两天发现一个开源日志组件ELMAH,一下子就喜欢上了,喜欢他的原因是它支持“热插拔”(不需要改动任何的程序)、简单的配置(几行配置)、多种记录方式(数据库、文件、Email)、支持多数据库(Access、SqlServer、Oracle、Sqlite、VistaDB),而且查看结果也不需要编写(并且支持rss发布查看)。

  ELMAH最新版本是ELMAH-1.0-BETA3,他是基于HttpModules、HttpHandlers的处理方式,只是记录错误日志不进行处理,不过这已经足够了,我们对于可能发生的异常地方肯定就会做处理的,对于意想不到的异常交给ELMAH就可以了,我们只需给用户提供一个友好的错误页面就可以了。

  他的用法非常简单,简单的让人无法相信,下面详细介绍他的用法。

  园子里也有朋友介绍过: 疯狂的石头 一切由.NET开始

一、下载组件 最新组件点击这里下载ELMAH-1.0-BETA3,把bin文件加的Elmah.dll加入到项目中(他支持net-1.0、 1.1、2.0、3.5)。

二、把db文件夹下的sql脚本执行一下,我们这里选择SQLServer.sql,在你的数据库中会生成一个ELMAH_Error表。

三、配置webconfig 在<configuration>中加入:

<configSections>
<sectionGroup name="elmah">

 <!-- 提示! ASP.NET1.x把requirePermission="false"去掉 -->
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>

</sectionGroup>
</configSections>
<elmah>
<security allowRemoteAccess="0" /><!--是否允许远程访问。0代表否、1代表是-->
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="E:\LogHaHa\" /><!--记录到文件-->
</elmah>

四、在<system.web>中加入

<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
</httpHandlers>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
</httpModules>

ok大功告成了!简单吧。这样我们就可以查看异常了,我们在程序中制造一个异常,然后输入http://localhost/elmah.axd(根目录下加上elmah.axd就可以了),也可以在webconfig加入对此页面的权限控制,详细的做法请参考链接资料。

效果图如下:



点击Details后的详细页面:



以rss方式查看:



我们主要介绍下<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="E:\LogHaHa\" />参数。这里是把日志记录到文件形式。

下面是详细介绍记录到不同地方的参数配置

1)把日志记录到SQL Server 2000 or 2005

<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="此处为connectionString的name" /> 适应ASP.NET2.0

<errorLog type="Elmah.SqlErrorLog, Elmah" connectionString="Data Source=.;Initial Catalog=ELMAH;Trusted_Connection=True" /> 适应ASP.NET1.x

2) 把日志记录到SQLite 适应ASP.NET2.0 1.x不支持

<errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="..." />

字符串格式如下:
<connectionStrings>
<add name="..." connectionString="data source=data source=C:\Elmah.db或~/App_Data/Error.db" />
</connectionStrings>
3)把日志记录到XML

<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="E:\LogHaHa\" />
4)把日志记录到Oracle

<errorLog type="Elmah.OracleErrorLog, Elmah" schemaOwner="xxx" />
connectionStringName="..." />适应ASP.NET2.0

<errorLog type="Elmah.OracleErrorLog, Elmah" 适应ASP.NET1.x
schemaOwner="xxx" />
connectionString="Data Source=xxxx;User ID=username;Password=password" />

5)把日志记录到Access

   <errorLog type="Elmah.AccessErrorLog, Elmah" connectionStringName="..." />适应ASP.NET2.0

<errorLog type="Elmah.AccessErrorLog, Elmah" 适应ASP.NET1.x
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Elmah.mdb" />

6)把日志记录到VistaDB

<errorLog type="Elmah.VistaDBErrorLog, Elmah"
connectionStringName="..." />

字符串格式:
<connectionStrings>
<add name="..." connectionString="Data Source='E:\Elmah.vdb3';Open Mode=NonExclusiveReadWrite;Pooling=True" providerName="VistaDB.Provider" />
</connectionStrings>

7)通过电子邮件
通过电子邮件发送错误报告。请注意,只有From和To属性是必需的。其余的都是可选的,并可能会被删除。如果服务器不要求身份验证,您必须删除的用户名和密码属性或设置为空值(导致零长度字符串) 。如果您使用 NET Framework 1.x,那么到属性可能包含多个收件人地址,每个必须划定的分号( ; ) 。如果您使用的是NET Framework 2.0或更高版本,然后到属性可能包含多个收件人地址,每个必须划定逗号( , ) 。

<errorMail
from="elmah@example.com"
to="admin@example.com"
subject="..."
async="true|false"
smtpPort="25"
smtpServer="smtp.example.com"
userName="johndoe"
password="secret" />

另外介绍下载文件夹里面的一个小工具,tools\Cassini下的Cassini.exe,他是一个虚拟的iis服务器,可以实现多个站点运行,在xp下非常有用,虽然在xp下我们可以用IISAdmin实现多个站点运行,不过一次只能运行一个网站,这个小工具可以实现任意个站点的同时运行,我们打开文件后在Application Directory选择你的程序所在的目录,Server Port中填上一个现在的iis没有使用的端口号,然后点击start就可以查看网站了。

PS:相比log4net个人比较喜欢这个,当然还有很多功能没有介绍,希望大家参考资料自己学习,也欢迎大家共同讨论。

参考资料:

http://msdn.microsoft.com/en-us/library/aa479332.aspx MSDN介绍 http://dotnetslackers.com/articles/aspnet/ErrorLoggingModulesAndHandlers.aspx 作者的网站

ELMAH-1.0-BETA3 最新版本下载及介绍
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: