Jen

一個記錄ASP.NET網站錯誤訊息的模組-ELMAH

ELMAH - error log module and handler

 

網站上線後, 把錯誤訊息藏起來後, 抓錯誤訊息變得蠻麻煩, 透過ELMAH會變的很方便.

Project Site : http://code.google.com/p/elmah/

http://code.google.com/p/elmah/wiki/Downloads?tm=2 - 目前1.1版本 (1.2Beta)

 

超簡單之一步一步照著做一定沒問題

 

A. 使用方法

加入dll參考

ELMAH-1.1-bin\bin\net-3.5\Release\Elmah.dll

image001

 

image002

 

B. web.config 設定:

設定sectionGroup

<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" />
      <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah" />
    </sectionGroup>

設定httphandler

  <httpHandlers>
      <!--elmah-->
      <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>

設定http module

    <httpModules>
      <!--elmah-->
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
    </httpModules>

 

C. 設定記錄log方式 :(蠻多種的, 我們公司能用到的就下面2種)

1. XML

<elmah>
   <security allowRemoteAccess="1" />
   <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/elmahXml" />
</elmah>
 

只要把logPath 指定一個可寫入的資料夾即可,但要小心該資料夾要不能被暱名user直接任意的request.

image003

2. SQL Server

SQL Command : \\data\ftp\ml_05\程式部門相關\ASP.NET元件集\ELMAH\SQLCommand_edit.sql

(包含 1 個table create , 3 個store procedure)

<elmah>
   <security allowRemoteAccess="1" />
   <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ELMAHSQL" />
 </elmah>

<connectionStrings>
     <add name="ELMAHSQL" 
       connectionString="data source=xxxxx"
       providerName="System.Data.SqlClient" />
</connectionStrings>

 

D. 顯示

http://local/elmah.axd 就可以看到所有的error log , 點Details還有詳細頁.

image004

這樣暱名使用者能任意看到這個網頁, 就再改一下web.config

<configuration>
<location path="elmah.axd">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

 

 

還有很多功能的樣子,想研究的朋友就看一下

Ref

http://msdn.microsoft.com/en-us/library/aa479332.aspx

http://code.google.com/p/elmah/

10 Essential Tools for building ASP.NET Websites

http://stephenwalther.com/blog/archive/2010/11/22/10-essential-tools-for-building-asp-net-websites.aspx

 

以上

0 意見: