博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ELMAH——可插拔错误日志工具
阅读量:5305 次
发布时间:2019-06-14

本文共 4684 字,大约阅读时间需要 15 分钟。

转:

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

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

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

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

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

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

 

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

再查看下生成的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()来安装ELMAH。当然在安装NuGet之前,首先需要在你的VS2010上安装Windows PowerShell 2.0,具体请看

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

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

选择“Package Manager Console”:

 

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

 

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

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

你也可以通过点击右键:

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

您还可以看到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,其实还支持很多类似安装包的安装以及卸载。

 

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


作者:
 
邮箱:sunleepy(AT)gmail.com
 
出处:  
     
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

 

转载于:https://www.cnblogs.com/jackljf/archive/2013/01/12/3588968.html

你可能感兴趣的文章
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
关于VMare中安装Ubuntu的一些说明
查看>>
字符串类型的相互转换
查看>>
day57 手写socket、路由系统、响应一个动态内容、链接数据库、django配置、及应用、DNS服务器...
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
python - wmi模块学习(windwos硬件信息获取)
查看>>
Maven------使用maven新建web项目出现问题 项目名称出现红色交叉
查看>>
基础学习:C#中float的取值范围和精度
查看>>
Akka-Cluster(3)- ClusterClient, 集群客户端
查看>>
java中基本数据类型和包装类的区别
查看>>
项目指南
查看>>
康托展开
查看>>
MongoDB-CRUD
查看>>
ASM字节码增强技术
查看>>
javaagent 简介
查看>>
C++学习之智能指针
查看>>