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


          今天看到一篇文章(构建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-bin\samples\Demo\Mails" /> 
                
    </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,其实还支持很多类似安装包的安装以及卸载。

    希望文章能够对大家有所帮助:)

  • 相关阅读:
    PAT 解题报告 1009. Product of Polynomials (25)
    PAT 解题报告 1007. Maximum Subsequence Sum (25)
    PAT 解题报告 1003. Emergency (25)
    PAT 解题报告 1004. Counting Leaves (30)
    【转】DataSource高级应用
    tomcat下jndi配置
    java中DriverManager跟DataSource获取getConnection有什么不同?
    理解JDBC和JNDI
    JDBC
    Dive into python 实例学python (2) —— 自省,apihelper
  • 原文地址:https://www.cnblogs.com/liping13599168/p/1962625.html
Copyright © 2020-2023  润新知