出處: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
下載下來後,看下它的目錄:工具
其中demo.cmd爲批處理文件,用來生成samples裏面Demo的相關文件,如bin,App_Data等等。網站
它會啓動tools目錄中的Cassini.exe,設置好應用程序虛擬目錄以及端口號(從demo.cmd裏面作設置)ui
啓動Cassini後,會自動打開一個網頁,點擊裏面的連接:To see the list of errors logged, vist elmah.axd.google
再查看下生成的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應用程序項目:
在「視圖」菜單 –> 「其餘窗口」中,找到以下:
選擇「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,其實還支持不少相似安裝包的安裝以及卸載。