易用的开源日志记录程序及其 .NET不用IIS实现预览站点工具
原文发布时间为:2011-02-28 —— 来源于本人的百度文章 [由搬家工具导入]
http://code.google.com/p/elmah/
(不需要改动任何的程序)、简单的配置(几行配置)、多种记录方式(数据库、文件、Email)、支持多数据库(Access、SqlServer、Oracle、Sqlite、VistaDB),而且查看结果也不需要编写(并且支持rss发布查看)。
ELMAH最新版本是ELMAH-1.0-BETA3,他是基于HttpModules、HttpHandlers的处理方式,只是记录错误日志不进行处理,不过这已经足够了,我们对于可能发生的异常地方肯定就会做处理的,对于意想不到的异常交给ELMAH就可以了,我们只需给用户提供一个友好的错误页面就可以了。
他的用法非常简单,简单的让人无法相信,下面详细介绍他的用法。
一、下载组件 最新组件点击这里下载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=""
to=""
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个人比较喜欢这个,当然还有很多功能没有介绍,希望大家参考资料自己学习,也欢迎大家共同讨论。
最新文章
- 使用Apache的Base64类实现Base64加解密
- HDU 4160
- js之数组常见的方法
- linux shell ls -1 列显示文件
- 剑指OFFER之链表中倒数第k个节点(九度OJ1517)
- cocos2d-x 2.0.3 设置高清模式注意事项(已移除-hd方式)
- 进程外Session和进程内Session存储
- shell程序设计(转)
- springboot结合maven打包发布
- (二分查找 拓展) leetcode 34. Find First and Last Position of Element in Sorted Array &;&; lintcode 61. Search for a Range
- javaScript简单的留言板
- UNIX口令破解机
- String 类中的几个练习--获取指定字符串中,大写字母、小写字母、数字的个数||获取一个字符串中,另一个字符串出现的次数
- Saltstack 分发
- C语言 &#183; 生物芯片
- 594. Longest Harmonious Subsequence
- 20155310 《Java程序设计》实验四 (Android程序设计)实验报告
- 结对作业二——WordCount进阶版
- Windows phone 8.1应用集成cortana语音命令
- paper-list
热门文章
- 爬虫学习(五)——使用handler管理器对象进行数据爬取的步骤
- Zabbix监控oracle各服务器连接数
- JZOJ 3385. 【NOIP2013模拟】黑魔法师之门
- Java开发学生管理系统
- Python学习笔记:装饰器
- HUD:3746-Cyclic Nacklace(补齐循环节)
- 栈及其DFS:B - Parentheses Balance
- package.json文件特殊符号含义
- Python框架之Django学习笔记(八)
- 引用其他头文件时出现这种错误,莫名其妙,error C2065: “ColorMatrix”: 未声明的标识符