原文发布时间为:2011-02-28 —— 来源于本人的百度文章 [由搬家工具导入]

http://code.google.com/p/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=""
            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个人比较喜欢这个,当然还有很多功能没有介绍,希望大家参考资料自己学习,也欢迎大家共同讨论。

http://cassinipp.codeplex.com

易用的开源日志记录程序及其 .NET不用IIS实现预览站点工具的更多相关文章

  1. log4net--不可多得的开源日志记录组件

    log4net--不可多得的开源日志记录组件 1 前奏 一直在用log4net日志工具,却没时间写个日志给大家分享一下这个工具,趁最近比较空些,好好分享一下这个工具. 2 说明 Log4net介绍就不 ...

  2. 小程序实现图片上传,预览以及图片base64位处理

    最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...

  3. java中开源日志记录工具log4j

    日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 001.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下 002.对 ...

  4. SVG-Android开源库——SVG生成Vector资源文件的编辑预览工具

    Vector矢量图在Android项目中的应用越来越广泛,但是如果你想用Android Studio自带的工具将SVG图片转化成Vector资源文件却是相当麻烦,首先能支持的SVG规范较少,其次操作流 ...

  5. 基于开源的GOCW和Directshow.net,实现摄像头预览、采集、录像等操作

    本文基于开源的GOCW和Directshow.net,实现图像采集等操作.最为关键的部分在于可以实现摄像头的控制,同时关于视频采集进行了实现. 具体的内容请关注首发于51CTO的课程<基于Csh ...

  6. 开源日志记录工具log4j

    前言:当我们进行大的项目书写的时候或者我们选择维护程序的时候,想知道几点几时我们录入的数据有bug是那么我们就采用--------------------------->log4j记录日志的信息 ...

  7. 【学习笔记】开源日志记录工具log4j使用方法

    http://blog.csdn.net/zouqingfang/article/details/37558469 一.在MyEclipse中使用log4j的步骤比较简单,主要分为以下四个步骤: 1. ...

  8. 微信小程序实现图片上传,预览,删除

    wxml: <view class='imgBox'> <image class='imgList' wx:for="{{imgs}}" wx:for-item= ...

  9. 微信小程序开发正常,真机预览模式错误

    原因是开发时设置了不检查域名是否合法,去后台设置上就可以了

随机推荐

  1. mysql 存储过程 例子

    DROP PROCEDURE IF EXISTS variable_demo; delimiter // CREATE PROCEDURE variable_demo() BEGIN select ' ...

  2. PAT basic 1087

    1087 有多少不同的值 (20 分) 当自然数 n 依次取 1.2.3.…….N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然 ...

  3. HDU2586 How far away ?

    一.描述 很久没写代码了,在之前一直在参与准备ASC比赛和美赛,现在又重新捡起来.目标是两个月后的邀请赛. 这题是树链拋分解决LCA问题的一个模板题. 首先介绍下树链拋分的基本思想. 对于任意一颗树, ...

  4. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  5. JVM——Java类加载机制总结

    )解析:解析阶段是把虚拟机中常量池的符号引用替换为直接引用的过程. 2.3 初始化 类初始化时类加载的最后一步,前面除了加载阶段用户可以通过自定义类加载器参与以外,其余都是虚拟机主导和控制.到了初始化 ...

  6. HDU 1847 Good Luck in CET-4 Everybody!(SG函数)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  7. Python虚拟机类机制之自定义class(四)

    用户自定义class 在本章中,我们将研究对用户自定义class的剖析,在demo1.py中,我们将研究单个class的实现,所以在这里并没有关于继承及多态的讨论.然而在demo1.py中,我们看到了 ...

  8. Python抓取视频内容

    Python抓取视频内容 Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具 ...

  9. @SpringBootApplication的扫描范围

    在公共类自定义一个全局异常类,实现全局捕获异常,在另一个服务中调用的时候,发现没有生效 因此我添加了一个@ComponentScan("com.wuhen.jwt.common") ...

  10. ThinkPHP5 连接 PostgreSQL

    $request = Db::connect( [ 'type' => 'pgsql', 'hostname' => '127.0.0.1', 'database' => 'keyw ...