WebEventProvider クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
非バッファー イベント プロバイダーの基本クラスを提供します。
public ref class WebEventProvider abstract : System::Configuration::Provider::ProviderBase
public abstract class WebEventProvider : System.Configuration.Provider.ProviderBase
type WebEventProvider = class
inherit ProviderBase
Public MustInherit Class WebEventProvider
Inherits ProviderBase
- 継承
- 派生
例
次のコード例は、 クラスから WebEventProvider 派生して、構成されたイベントを適切なアクセス権を付与する必要があるローカル ファイルに書き込むカスタム プロバイダーを作成する方法を示しています。 このカスタム プロバイダーの例は単純であり、その主な目的は、開発者が基本的なメカニズムを完全に制御できるようにすることです。 実際のシナリオでは、このプロバイダー、特に で BufferedWebEventProvider使用できるバッファーされたプロバイダーの例を、アプリケーションの動作の事前プローブとして使用できます。 これは、利用可能な情報の理解を得るために設計段階で役立ちます。その後、この情報をより複雑なプロバイダーに送信できます。
次の構成ファイルの抜粋は、 healthMonitoring
ASP.NET が上記で定義したカスタム プロバイダーを使用してすべての正常性監視イベントを処理できるようにするセクション構成を示しています。
<healthMonitoring
heartBeatInterval="0"
enabled="true">
<providers>
<add name="SampleWebEventProvider"
type="SamplesAspNet.SampleEventProvider,webeventprovider, Version=1.0.1773.33989, Culture=neutral, PublicKeyToken=cf85aa6c978d9dea, processorArchitecture=MSIL" />
</providers>
<rules>
<rule
name="Custom Event Provider"
eventName="All Events"
provider="SampleWebEventProvider"
profile="Default" />
</rules>
</healthMonitoring>
using System;
using System.Text;
using System.IO;
using System.Web.Management;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Web;
namespace SamplesAspNet
{
// Implements a custom event provider.
public class SampleEventProvider :
System.Web.Management.WebEventProvider
{
// The local path of the file where
// to store event information.
private string logFilePath;
// The current number of buffered messages
private int msgCounter;
// The max number of messages to buffere.
private int maxMsgNumber;
// The message buffer.
private System.Collections.Generic.Queue
<WebBaseEvent> msgBuffer =
new Queue<WebBaseEvent>();
// Initializes the provider.
public SampleEventProvider(): base()
{
// Initialize the local path of the file
// that holds event information.
logFilePath = "C:/test/log.doc";
// Clear the message buffer.
msgBuffer.Clear();
// Initialize the max number of messages
// to buffer.
maxMsgNumber = 10;
// More custom initialization goes here.
}
// Flush the input buffer if required.
public override void Flush()
{
// Create a string builder to
// hold the event information.
StringBuilder reData = new StringBuilder();
// Store custom information.
reData.Append("SampleEventProvider processing." +
Environment.NewLine);
reData.Append("Flush done at: {0}" +
DateTime.Now.TimeOfDay.ToString() +
Environment.NewLine);
foreach (WebBaseEvent e in msgBuffer)
{
// Store event data.
reData.Append(e.ToString());
}
// Store the information in the specified file.
StoreToFile(reData, logFilePath, FileMode.Append);
// Reset the message counter.
msgCounter = 0;
// Clear the buffer.
msgBuffer.Clear();
}
// Shutdown the provider.
public override void Shutdown()
{
Flush();
}
// Process the event that has been raised.
public override void ProcessEvent(WebBaseEvent raisedEvent)
{
if (msgCounter < maxMsgNumber)
{
// Buffer the event information.
msgBuffer.Enqueue(raisedEvent);
// Increment the message counter.
msgCounter += 1;
}
else
{
// Flush the buffer.
Flush();
}
}
// Store event information in a local file.
private void StoreToFile(StringBuilder text,
string filePath, FileMode mode)
{
int writeBlock;
int startIndex;
try
{
writeBlock = 256;
startIndex = 0;
// Open or create the local file
// to store the event information.
FileStream fs = new FileStream(filePath,
mode, FileAccess.Write);
// Lock the file for writing.
fs.Lock(startIndex, writeBlock);
// Create a stream writer
StreamWriter writer = new StreamWriter(fs);
// Set the file pointer to the current
// position to keep adding data to it.
// If you want to rewrite the file use
// the following statement instead.
// writer.BaseStream.Seek (0, SeekOrigin.Begin);
writer.BaseStream.Seek(0, SeekOrigin.Current);
//If the file already exists it must not
// be write protected otherwise
// the following write operation fails silently.
writer.Write(text.ToString());
// Update the underlying file
writer.Flush();
// Unlock the file for other processes.
fs.Unlock(startIndex, writeBlock);
// Close the stream writer and the underlying file
writer.Close();
fs.Close();
}
catch (Exception e)
{
throw new Exception(
"SampleEventProvider.StoreToFile: "
+ e.ToString());
}
}
}
}
Imports System.Text
Imports System.IO
Imports System.Web.Management
Imports System.Collections.Generic
Imports System.Collections.Specialized
Imports System.Web
' Implements a custom event provider.
Public Class SampleEventProvider
Inherits System.Web.Management.WebEventProvider
' The local path of the file where
' to store event information.
Private logFilePath As String
' The current number of buffered messages
Private msgCounter As Integer
' The max number of messages to buffere.
Private maxMsgNumber As Integer
' The message buffer.
' private System.Collections.Generic.Queue
Private msgBuffer _
As System.Collections.Generic.Queue( _
Of System.Web.Management.WebBaseEvent) = _
New System.Collections.Generic.Queue( _
Of System.Web.Management.WebBaseEvent)
' Initializes the provider.
Public Sub New()
' Initialize the local path of the file
' that holds event information.
logFilePath = "C:/test/log.doc"
' Clear the message buffer.
msgBuffer.Clear()
' Initialize the max number of messages
' to buffer.
maxMsgNumber = 10
End Sub
' More custom initialization goes here.
' Flush the input buffer if required.
Public Overrides Sub Flush()
' Create a string builder to
' hold the event information.
Dim reData As New StringBuilder()
' Store custom information.
reData.Append( _
"SampleEventProvider processing." + _
Environment.NewLine)
reData.Append( _
"Flush done at: {0}" + _
DateTime.Now.TimeOfDay.ToString() + _
Environment.NewLine)
Dim e As WebBaseEvent
For Each e In msgBuffer
' Store event data.
reData.Append(e.ToString())
Next e
' Store the information in the specified file.
StoreToFile(reData, logFilePath, FileMode.Append)
' Reset the message counter.
msgCounter = 0
' Clear the buffer.
msgBuffer.Clear()
End Sub
' Shutdown the provider.
Public Overrides Sub Shutdown()
Flush()
End Sub
' Process the event that has been raised.
Public Overrides Sub ProcessEvent( _
ByVal raisedEvent As WebBaseEvent)
If msgCounter < maxMsgNumber Then
' Buffer the event information.
msgBuffer.Enqueue(raisedEvent)
' Increment the message counter.
msgCounter += 1
Else
' Flush the buffer.
Flush()
End If
End Sub
' Store event information in a local file.
Private Sub StoreToFile( _
ByVal [text] As StringBuilder, _
ByVal filePath As String, _
ByVal mode As FileMode)
Dim writeBlock As Integer
Dim startIndex As Integer
Try
writeBlock = 256
startIndex = 0
' Open or create the local file
' to store the event information.
Dim fs As New FileStream( _
filePath, mode, FileAccess.Write)
' Lock the file for writing.
fs.Lock(startIndex, writeBlock)
' Create a stream writer
Dim writer As New StreamWriter(fs)
' Set the file pointer to the current
' position to keep adding data to it.
' If you want to rewrite the file use
' the(following) statement instead.
' writer.BaseStream.Seek (0, SeekOrigin.Begin);
writer.BaseStream.Seek(0, SeekOrigin.Current)
'If the file already exists it must
'not be write protected, otherwise
'the following write operation fails silently.
writer.Write([text].ToString())
' Update the underlying file
writer.Flush()
' Unlock the file for other processes.
fs.Unlock(startIndex, writeBlock)
' Close the stream writer and the underlying file
writer.Close()
fs.Close()
Catch e As Exception
Throw New Exception( _
"SampleEventProvider.StoreToFile: " + _
e.ToString())
End Try
End Sub
End Class
注釈
ASP.NET 正常性の監視により、運用スタッフと運用スタッフはデプロイされた Web アプリケーションを管理できます。 System.Web.Management名前空間には、アプリケーションの正常性状態データのパッケージ化を担当する正常性イベントの種類と、このデータの処理を担当するプロバイダーの種類が含まれています。 また、正常性イベントの管理中に役立つサポート型も含まれています。
正常性イベント処理をカスタマイズする場合は、 クラスから派生して独自の WebEventProvider カスタム プロバイダーを作成できます。
注意
ほとんどの場合、実装されている ASP.NET の正常性監視の種類を使用でき、構成セクションで値を指定して正常性監視システムを healthMonitoring
制御します。 正常性監視の種類から派生して、独自のカスタム イベントとプロバイダーを作成することもできます。 クラスからの WebEventProvider 派生の例については、このトピックで提供されている例を参照してください。
コンストラクター
WebEventProvider() |
WebEventProvider クラスの新しいインスタンスを初期化します。 |
プロパティ
Description |
管理ツールまたは他のユーザー インターフェイス (UI) での表示に適した、簡単でわかりやすい説明を取得します。 (継承元 ProviderBase) |
Name |
構成時にプロバイダーを参照するために使用される表示名を取得します。 (継承元 ProviderBase) |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
Flush() |
イベントをプロバイダーのバッファーからイベント ログに移動します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
Initialize(String, NameValueCollection) |
構成ビルダーを初期化します。 (継承元 ProviderBase) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ProcessEvent(WebBaseEvent) |
プロバイダーに渡されたイベントを処理します。 |
Shutdown() |
プロバイダーのシャットダウンに関連するタスクを実行します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET