• 易用的开源日志记录程序及其 .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就可以了,我们只需给用户提供一个友好的错误页面就可以了。

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

      园子里也有朋友介绍过: 疯狂的石头    一切由.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" />
      

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

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

    http://cassinipp.codeplex.com

  • 相关阅读:
    Spring中依赖注入的四种方式
    使用 EasyMock 更轻松地进行测试
    HDU2196 Computer(树形DP)
    BZOJ2125: 最短路(圆方树)
    虚树入门
    BZOJ2286: [Sdoi2011]消耗战(虚树/树形DP)
    Codeforces Round #487 (Div. 2)
    Educational Codeforces Round 45 (Rated for Div. 2)
    BZOJ3675: [Apio2014]序列分割(斜率优化)
    BZOJ2761: [JLOI2011]不重复数字(map)
  • 原文地址:https://www.cnblogs.com/handboy/p/7163987.html
Copyright © 2020-2023  润新知