最初に、Health Monitoring System(以降HMS)を定義しようとします。
HMSは、サイトを監視し、特定のイベントに応答するモジュールです。 この記事では、特定のケースの実装を取り上げます。重大なエラーが発生した場合に、さまざまな情報を記載した手紙をメールに送信します。
なぜこれが必要なのですか? 具体例を挙げましょう。 現時点では、私が仕事で従事しているプロジェクトは顧客のサーバーに転送されます。契約はサイトのサポート期間を提供するため、ユーザーがサイトを使用するときに必ず発生するエラーを追跡するツールが必要でした。 したがって、HMSはこれに理想的です。私の側では、実装作業は実質的に必要ありませんが、同時に理想的な結果が得られます。 ご希望の場合は、さらに多くの例を考え出すことができますが、その本質を理解しており、私の状況は多くの人に近いと思います。
それでは始めましょう。 先ほど言ったように、ファイルを1つだけ変更する必要があります。 おそらく誰もがすでにweb.configであると私なしで推測しています。
開いて、 <system.web>セクションを探し、以下を追加します。
< healthMonitoring enabled = "true" >
</ healthMonitoring >
実際、HMSは既に含まれています。 それを構成するために残ります。 それ以降のすべてのコードは、 healthMonitoringタグの間に入力する必要があります。
適切な形式のルールに従い、イベントに人間の名前を付けます。
< eventMappings >
< 追加
name = "MyEvent"
タイプ = "System.Web.Management.WebErrorEvent"
startEventCode = "0"
endEventCode = "10000" />
</ eventMappings >
これで、MyEventという名前を使用して、エラーを表すSystem.Web.Management.WebErrorEventタイプのすべてのイベントを表すことができます。 ASP.NETは各イベントに一意の番号を割り当てるため、これらの番号の範囲を示します(10000に達すると、0から再開します)。 次に、システムが私たちにあふれないようにバッファを設定します。
< bufferModes >
< 追加
name = "MyBuffer"
maxBufferSize = "100"
maxFlushSize = "50"
maxBufferThreads = "1"
regularFlushInterval = "00:10:00"
urgentFlushInterval = "00:01:00"
urgentFlushThreshold = "10" />
</ bufferModes >
このすべての本質は次のように要約できます。少なくとも1つのイベントが蓄積された場合、または50件のイベントが蓄積された直後に、HMSは10分ごとに手紙を書き込みます。 好みに合わせてカスタマイズできます。 もう1つの重要なステップは、プロバイダーの選択と構成です。 System.Web.Management.SimpleMailWebEventProviderが必要です。
< プロバイダー >
< add name = "MyProvider"
type = "System.Web.Management.SimpleMailWebEventProvider"
from = "sender@site.com"
to = "reciever@site.com"
bodyHeader = "警告!"
bodyFooter =「 できるだけ早く 調査してください。」
subjectPrefix = "アクションが必要です。"
buffer = "true"
bufferMode = "MyBuffer"
maxEventLength = "4096"
maxMessagesPerNotification = "1" />
</ プロバイダー >
彼には多くの設定があり、 ここでそれらを完全に見ることができます 、私は短縮版を提供しました。 最後の手順は、すべてを結び付けるルールを追加することです。
< ルール >
< 追加
name = "MyRule"
eventName = "MyEvent"
プロバイダー = "MyProvider" />
</ ルール >
以上です。 私たちのシステムはすでに動作しています(動作しない場合は、IISでアプリケーションを再起動してみてください)。 サイトが例外をスローするとすぐに、アプリケーション、リクエスト、例外、ユーザーとそのIPアドレス、さらにスタックの完全なトレースについての情報を含む電子メールを受け取ります。 エラーとその除去の原因を特定するために他に何が必要ですか?
PS当然、SimpleMailWebEventProviderを使用するには、web.configに正しいsmtp定義が必要です。 あなたはここでそれについて読むことができます 。 HMSで使用できるイベントとプロバイダーには、まだ非常に多くの種類があります。すべてがここに記述されています 。