2008年5月8日 星期四

將ASP.NET3.5健康監控(Health Monitoring)資訊紀錄到SQL Server

以健康監控的功能來看,目前ASP.NET 3.5有內建 Web 事件,並且已經設定提供者當做系統預設值。但是,rules 項目中只啟用兩個事件:All Errors 和 Failure Audits,這兩個事件都已啟用並且已由 EventLogProvider 訂閱。 所以如果要將記錄的資料用資料庫來保存的話,那麼就外另外設定使用:SqlWebEventProvider 才行。

以下是亞當斯設計的步驟:

1.一開始先新增一支DemoHealthMonitoring.aspx給個按鈕,動作是產生自訂錯誤 :
protected void Button1_Click(object sender, EventArgs e) 

    throw new Exception("自訂錯誤"); 
}
3.執行後,可以先檢視事件檢視器,並且對照機器層級的Web.config設定,可看到有WebEvent被觸發紀錄。HealthMonitoring-01

4. 接下來可以透過設定將網頁事件紀錄到SQL中,設定方式為設定Web.config中的<healthMonitoring> ,設定如下 : 

<healthMonitoring>
  <!--先加入一個eventMappings偵測網頁事件-->
  <eventMappings>
    <add name="ASP.NET Events"
         type="System.Web.Management.WebBaseEvent"/>
  </eventMappings>
  <!--設定使用SQL來記錄訊息-->
  <providers>
    <add name="MySqlWebEventProvider"
      type="System.Web.Management.SqlWebEventProvider"
      connectionStringName="LocalSqlServer"
      bufferMode="Notification"/>
  </providers>
  <!--設定規則-->
  <rules>
    <add
      name="All Errors"
      eventName="ASP.NET Events"
      provider="MySqlWebEventProvider" />
  </rules>
</healthMonitoring>

5.再次執行DemoHealthMonitoring.aspx,過一分鐘後可以檢視App_Data中, 會多了一個ASPNETDB.MDF資料庫,檢視其中的aspnet_WebEvent_Events資料表即可!!HealthMonitoring-02

下列檔案為此篇文章的範例程式,有興趣的朋友可自行下載:

沒有留言: