• 【工具推荐】ELMAH——可插拔错误日志工具(转)


    出处:http://www.cnblogs.com/liping13599168/archive/2011/02/23/1962625.html

    今天看到一篇文章(构建ASP.NET网站十大必备工具(2)),里面介绍了一个ELMAH的错误日志工具,于是研究了一下。 ELMAH 是 Error Logging Modules and Handlers for ASP.NET 的缩写。ELMAH可以让你记录下你的网站发生的任何一个错误,在将来,你可以重新检查这些错误。你可以从ELMAH项目的官方网站免费下载ELMAH:http://code.google.com/p/elmah/

    ELMAH既支持ASP.NET Web Forms 又支持 ASP.NET MVC。你可以对ELMAH进行配置来存储各种不同的错误(XML文件,事件日志,Access数据库,SQL数据库,Oracle数据库,或者计算机 RAM。)你还可以让ELMAH在错误发生的时候,把错误信息email给你。

    在默认情况下,在一个已经安装ELMAH的网站中,你可以通过请求的elmah.axd页面的方式来访问ELMAH。

    下载下来后,看下它的目录:

    image

    其中demo.cmd为批处理文件,用来生成samples里面Demo的相关文件,如bin,App_Data等等。

    它会启动tools目录中的Cassini.exe,设置好应用程序虚拟目录以及端口号(从demo.cmd里面做设置)

    image 

    启动Cassini后,会自动打开一个网页,点击里面的链接:To see the list of errors logged, vist elmah.axd.

    image

    再查看下生成的Web.config:

    复制代码
    <?xml version="1.0"?> 
    <configuration> 
        
    <configSections> 
            
    <sectionGroup name="elmah"> 
                
    <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"/> 
            
    </sectionGroup> 
        
    </configSections> 
        
    <elmah> 
            
    <errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="ELMAH.SQLite" /> 
            
    <errorMail from="noreply@example.com" to="elmah@example.com" priority="high" /> 
        
    </elmah> 
        
    <connectionStrings> 
            
    <add name="ELMAH.SQLite" connectionString="Data Source=|DataDirectory|errors.s3db"/> 
        
    </connectionStrings> 
        
    <system.net> 
            
    <mailSettings> 
                
    <smtp deliveryMethod="SpecifiedPickupDirectory"> 
                    
    <specifiedPickupDirectory pickupDirectoryLocation="F:ELMAH-1.1-binsamplesDemoMails" /> 
                
    </smtp> 
            
    </mailSettings> 
        
    </system.net> 
        
    <system.web> 
            
    <compilation debug="true" defaultLanguage="C#" /> 
            
    <httpModules> 
                
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/> 
                
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
                
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> 
            
    </httpModules> 
            
    <httpHandlers> 
                
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
            
    </httpHandlers> 
            
    <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/> 
            
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US"/> 
            
    <trust level="Full"/> 
        
    </system.web> 
    </configuration> 
    复制代码

    其中elmah.axd对应ErrorLogPageFactory去做Handler处理。

    存储数据使用的是Sqlite的。

    通过这种方式,您就可以在自己的网站上部署这样的一个错误日志工具了。

    如果您想自动创建一个这样Elmah的项目,可以利用ASP.NET软件包管理器 NuGet(http://nuget.codeplex.com/)来安装ELMAH。当然在安装NuGet之前,首先需要在你的VS2010上安装Windows PowerShell 2.0,具体请看http://support.microsoft.com/kb/968929

    接着新建一个项目,我这里选择新建一个asp.net Web应用程序项目:

    image

    在“视图”菜单 –> “其他窗口”中,找到如下:

    image

    选择“Package Manager Console”:

    image 

    我们看下NuGet都有哪些指令,输入get-help NuGet

    image 

    这里输入“Install-Package elmah”,进行elmah安装(在你安装完之后你也可以通过Update-Package从网站上更新最新版本的包,也可以通过Uninatall-Package卸载Elmah):

    image

    OK,安装成功。这时候你可以看到项目中引入了Elmah引用:

    image

    你也可以通过点击右键:

    image

    选择“Add Library Package Refernece”进行卸载Elmah:

    image

    您还可以看到Web.config中也自动增加了一些Elmah的相关配置:

    复制代码
    <sectionGroup name="elmah"> 
          
    <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> 

    ……

    <httpHandlers> 
          
    <remove verb="*" path="*.asmx" /> 
          
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
          
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
          
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> 
          
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
        
    </httpHandlers> 
        
    <httpModules> 
          
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
          
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
        
    </httpModules>
        <httpHandlers> 
          
    <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
        
    </httpHandlers> 
    复制代码
     

    NuGet还是非常不错的东西,除了支持Elmah,其实还支持很多类似安装包的安装以及卸载。

  • 相关阅读:
    spark编译
    使用MapReduce实现两个文件的Join操作
    响应式 Web 设计
    响应式 Web 设计
    900W+数据只用300ms搞定!SQL查询优化这样做最快耗时347ms
    响应式 Web 设计
    CSS3 多媒体查询实例
    CSS3 多媒体查询:查找设备的类型,CSS3 根据设置自适应显示
    CSS3 弹性盒子(Flex Box):确保元素拥有恰当的行为的布局方式
    CSS3 框大小:padding(内边距) 和 border(边框)
  • 原文地址:https://www.cnblogs.com/smileberry/p/3524822.html
Copyright © 2020-2023  润新知