【工具推薦】ELMAH——可插拔錯誤日誌工具(轉)

出處:http://www.cnblogs.com/liping13599168/archive/2011/02/23/1962625.htmlhtml

今天看到一篇文章(構建ASP.NET網站十大必備工具(2)),裏面介紹了一個ELMAH的錯誤日誌工具,因而研究了一下。 ELMAH 是 Error Logging Modules and Handlers for ASP.NET 的縮寫。ELMAH可讓你記錄下你的網站發生的任何一個錯誤,在未來,你能夠從新檢查這些錯誤。你能夠從ELMAH項目的官方網站免費下載ELMAH:http://code.google.com/p/elmah/web

ELMAH既支持ASP.NET Web Forms 又支持 ASP.NET MVC。你能夠對ELMAH進行配置來存儲各類不一樣的錯誤(XML文件,事件日誌,Access數據庫,SQL數據庫,Oracle數據庫,或者計算機 RAM。)你還可讓ELMAH在錯誤發生的時候,把錯誤信息email給你。數據庫

在默認狀況下,在一個已經安裝ELMAH的網站中,你能夠經過請求的elmah.axd頁面的方式來訪問ELMAH。asp.net

下載下來後,看下它的目錄:工具

image

其中demo.cmd爲批處理文件,用來生成samples裏面Demo的相關文件,如bin,App_Data等等。網站

它會啓動tools目錄中的Cassini.exe,設置好應用程序虛擬目錄以及端口號(從demo.cmd裏面作設置)ui

image 

啓動Cassini後,會自動打開一個網頁,點擊裏面的連接:To see the list of errors logged, vist elmah.axd.google

image

再查看下生成的Web.config:spa

複製代碼
<? 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處理。.net

存儲數據使用的是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,其實還支持不少相似安裝包的安裝以及卸載。

相關文章
相關標籤/搜索