配置針對應用程序的運行狀況監視的一個服務
配置節內容比以往的較為復雜,如下
<healthMonitoring Enabled="true|false" heartbeatInterval="time interval"> <bufferModes>...</bufferModes> <providers>...</providers> <eventMappings>...</eventMappings> <profiles>...</profiles> <rules>...</rules> </healthMonitoring>
實際上這是運行狀況監視是一個事件定義與處理的模型,簡單來看整個運行狀況監視基本點有以下三個
1.在eventMappings定義事件
2.在providers定義事件的處理
3.通過rules綁定事件給某個處理程序去處理。
稍微豐富一點的話,還可以包含下面這幾點
1.事件可以帶參數,參數則定義在profiles中,也是在綁定事件時通過rules指定
2.處理程序可以具備緩沖功能,緩沖功能在在bufferModes中定義,在providers中指定給對應的處理程序。
配置中所有子節點都是一個集合,下面展示幾個關鍵個集合中元素的特性
eventMappings:件的友好名稱
name:事件友好的名稱(唯一標識)
type:事件的完全限定類型名稱
startEventCode和endEventCode:指定事件代碼標識符的其實范圍
profiles:事件配置
name:指定配置文件名稱(唯一標識)
minimumInstances:激發事件之前至少出現的次數
maximumLimit:指定阈值,在達到該值後,將停止激發事件
minimumInterval:指定兩個事件之間的最小時間間隔,以 "hh:mm:ss" 的形式表示
providers:負責事件處理類型的集合
name:指定提供程序的友好名稱(唯一標識)
type:指定對某個類的完全限定的程序集引用
buffer:指定提供程序是使用緩沖還是立即將每個事件發送給收件人,僅適用於type是 SqlWebEventProvider 類
bufferMode:指定提供程序使用的緩沖模式的名稱(如果提供程序處於緩沖模式)。此名稱必須引用 BufferModesCollection 集合中存在的現有緩沖模式之一;否則,將引發一個異常。如果打開了緩沖,則此屬性必須存在,僅適用於 SQLWebEventProvider 屬性。
rules:將事件映射到它的提供程序(給事件綁定處理類進行處理)
name:指定此規則的名稱
eventName、provider和profile:對其它配置節的關聯引用
minInstances:事件通知觸發前在給定應用程序內部的規則實例的最小數量
maxLimit:指定生成提供程序通知的規則實例的最大數量。
minInterval:指定兩個事件之間的最小時間間隔。
看profiles和rules中有相似的屬性存在,雖然同樣有最小次數、最大數量和最小時間間隔,而從文字上看,是先按照rules判斷,再按照providers進行判斷。
縱觀之前的描述和鄙人之前看的一篇博客(看上去感覺在MSDN中抄了不少)。只要了解了事件處理模型,這個配置節的內容以及它的功能則會好理解。框架中定義了若干個事件,和若干個事件處理程序。博文後的附錄部分則是ASP.NET中定義的事件和處理程序。開發人員有需要的話可以自己對其進行擴展,不過不管怎麼去改,也需要去添加一個新的rule。
另外,從博文或者從MSDN中也得知,如需要自己觸發事件,可調用WebBaseEvent的Raise()方法。
<eventMappings> <add name="All Events" type="System.Web.Management.WebBaseEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Heartbeats" type="System.Web.Management.WebHeartbeatEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Application Lifetime Events" type="System.Web.Management.WebApplicationLifetimeEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Request Processing Events" type="System.Web.Management.WebRequestEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Infrastructure Errors" type="System.Web.Management.WebErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Request Processing Errors" type="System.Web.Management.WebRequestErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="All Audits" type="System.Web.Management.WebAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Failure Audits" type="System.Web.Management.WebFailureAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> <add name="Success Audits" type="System.Web.Management.WebSuccessAuditEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" startEventCode="0" endEventCode="2147483647"/> </eventMappings> 事件 <add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/> <add connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="false" bufferMode="Notification" name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/> <add name="WmiWebEventProvider" type="System.Web.Management.WmiWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/> 事件處理程序