EventInstance クラス
アセンブリ: System (system.dll 内)
構文
解説
文字列値ではなくリソース識別子を使用してイベント ログ エントリを書き込むには、EventInstance を使用します。イベント ログ エントリを書き込むには、InstanceId プロパティを初期化して、インスタンスを WriteEvent メソッドに渡します。イベント ビューアでは、インスタンス識別子を使用して、ローカライズされたリソース ファイルから、現在の言語設定に基づく対応する文字列を検索して表示させることができます。リソース識別子を使用してイベントを書き込むには、対応するリソース ファイルでイベント ソースを登録しておく必要があります。
イベントを書き込むときに、EntryType プロパティを設定して、イベント ビューアがエントリに対して表示するアイコンを指定できます。CategoryId プロパティを指定して、イベント ビューアがエントリに対して表示するカテゴリを指定することもできます。
イベント ビューアでは、カテゴリを使用することにより、イベント ソースによって書き込まれたイベントをフィルタ処理できます。イベント ビューアには、カテゴリを数値として表示させたり、カテゴリをリソース識別子として使用して、ローカライズされたカテゴリ文字列を表示させたりすることもできます。
ローカライズされたカテゴリ文字列をイベント ビューアに表示するには、カテゴリ リソース ファイルで構成されたイベント ソースを使用し、CategoryId を、カテゴリ リソース ファイル内のリソース識別子に設定する必要があります。イベント ソースに構成済みのカテゴリ リソース ファイルがないか、指定された CategoryId がカテゴリ リソース ファイル内の文字列のインデックスを作成していない場合、イベント ビューアは、そのエントリのカテゴリ値を表示します。EventLogInstaller または EventSourceCreationData クラスを使用して、カテゴリ リソース ファイルを構成し、リソース ファイル内のカテゴリ文字列数を設定します。
EventInstance を使用して WriteEvent メソッドでイベントを書き込む前に、イベント ログのソースを登録する必要があります。ソースは、ローカライズされたエントリをログに書き込むように構成する必要があります。また、ソースは少なくとも 1 つのメッセージ リソース ファイルを定義する必要があります。
アプリケーションのインストール時に新しいイベント ソースを作成します。これにより、オペレーティング システムが、登録されたイベント ソースとその構成の一覧を更新するための時間的余裕が生まれます。イベント ソースの一覧がオペレーティング システムにより更新されていないとき、新しいソースでイベントを書き込もうとすると、書き込み操作が失敗します。新しいソースは、EventLogInstaller または CreateEventSource メソッドを使用して構成できます。新しいイベント ソースを作成するには、コンピュータの管理者権限が必要です。
イベント メッセージの定義およびイベント ログ リソース ファイルの作成の詳細については、http://www.microsoft.com/japan/msdn のプラットフォーム SDK ドキュメントで「Message Compiler」のトピックを参照してください。
Windows 98, Windows Millennium Edition プラットフォームメモ : イベント ログは、Windows 98 または Windows Millennium Edition (Me) ではサポートされていません。
情報イベント エントリを書き込んだ後、EventInstance を再利用して、既存のイベント ログに警告イベントのエントリを書き込むコード例を次に示します。イベントのメッセージ テキストは、メッセージ リソース ファイルでリソース識別子を使用して指定されます。このコード例では、ソースに対して、対応するメッセージ リソース ファイルが登録されていることを前提にしています。
' Ensure that the source has already been registered using ' EventLogInstaller or EventLog.CreateEventSource. Dim sourceName as String = "SampleApplicationSource" If EventLog.SourceExists(sourceName) ' Define an informational event with no category. ' The message identifier corresponds to the message text in the ' message resource file defined for the source. Dim myEvent As EventInstance = New EventInstance(UpdateCycleCompleteMsgId, 0) ' Write the event to the event log using the registered source. EventLog.WriteEvent(sourceName, myEvent) ' Reuse the event data instance for another event entry. ' Set the entry category and message identifiers for ' the appropriate resource identifiers in the resource files ' for the registered source. Set the event type to Warning. myEvent.CategoryId = RefreshCategoryMsgId myEvent.EntryType = EventLogEntryType.Warning myEvent.InstanceId = ServerConnectionDownMsgId ' Write the event to the event log using the registered source. ' Insert the machine name into the event message text. EventLog.WriteEvent(sourceName, myEvent, Environment.MachineName) Else Console.WriteLine("Warning - event source {0} not registered", _ sourceName) End If
// Ensure that the source has already been registered using // EventLogInstaller or EventLog.CreateEventSource. string sourceName = "SampleApplicationSource"; if(EventLog.SourceExists(sourceName)) { // Define an informational event with no category. // The message identifier corresponds to the message text in the // message resource file defined for the source. EventInstance myEvent = new EventInstance(UpdateCycleCompleteMsgId, 0); // Write the event to the event log using the registered source. EventLog.WriteEvent(sourceName, myEvent); // Reuse the event data instance for another event entry. // Set the entry category and message identifiers for // the appropriate resource identifiers in the resource files // for the registered source. Set the event type to Warning. myEvent.CategoryId = RefreshCategoryMsgId; myEvent.EntryType = EventLogEntryType.Warning; myEvent.InstanceId = ServerConnectionDownMsgId; // Write the event to the event log using the registered source. // Insert the machine name into the event message text. EventLog.WriteEvent(sourceName, myEvent, Environment.MachineName); } else { Console.WriteLine("Warning - event source {0} not registered", sourceName); }
// Ensure that the source has already been registered using // EventLogInstaller or EventLog.CreateEventSource. String^ sourceName = "SampleApplicationSource"; if ( EventLog::SourceExists( sourceName ) ) { // Define an informational event with no category. // The message identifier corresponds to the message text in the // message resource file defined for the source. EventInstance ^ myEvent = gcnew EventInstance( UpdateCycleCompleteMsgId,0 ); // Write the event to the event log using the registered source. EventLog::WriteEvent( sourceName, myEvent, 0 ); // Reuse the event data instance for another event entry. // Set the entry category and message identifiers for // the appropriate resource identifiers in the resource files // for the registered source. Set the event type to Warning. myEvent->CategoryId = RefreshCategoryMsgId; myEvent->EntryType = EventLogEntryType::Warning; myEvent->InstanceId = ServerConnectionDownMsgId; // Write the event to the event log using the registered source. // Insert the machine name into the event message text. array<String^>^ss = {Environment::MachineName}; EventLog::WriteEvent( sourceName, myEvent, ss ); } else { Console::WriteLine( "Warning - event source {0} not registered", sourceName ); }
コード例では、リソース ライブラリ EventLogMsgs.dll に組み込まれた、次のメッセージ テキスト ファイルが使用されています。メッセージ リソース ファイルは、メッセージ テキスト ファイルから生成されます。メッセージ テキスト ファイルでは、リソース識別子の他、カテゴリ、イベント メッセージ、およびパラメータ挿入文字列のテキストが定義されます。
; // EventLogMsgs.mc ; // ******************************************************** ; // Use the following commands to build this file: ; // mc -s EventLogMsgs.mc ; // rc EventLogMsgs.rc ; // link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res ; // ******************************************************** ; // - Event categories - ; // Categories must be numbered consecutively starting at 1. ; // ******************************************************** MessageId=0x1 Severity=Success SymbolicName=INSTALL_CATEGORY Language=English Installation . MessageId=0x2 Severity=Success SymbolicName=QUERY_CATEGORY Language=English Database Query . MessageId=0x3 Severity=Success SymbolicName=REFRESH_CATEGORY Language=English Data Refresh . ; // - Event messages - ; // ********************************* MessageId = 1000 Severity = Success Facility = Application SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000 Language=English My application message text, in English, for message id 1000, called from %1. . MessageId = 1001 Severity = Warning Facility = Application SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001 Language=English My application message text, in English, for message id 1001, called from %1. . MessageId = 1002 Severity = Success Facility = Application SymbolicName = GENERIC_INFO_MESSAGE_ID_1002 Language=English My generic information message in English, for message id 1002. . MessageId = 1003 Severity = Warning Facility = Application SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003 Language=English My generic warning message in English, for message id 1003, called from %1. . MessageId = 1004 Severity = Success Facility = Application SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004 Language=English The update cycle is complete for %%5002. . MessageId = 1005 Severity = Warning Facility = Application SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005 Language=English The refresh operation did not complete because the connection to server %1 could not be established. . ; // - Event log display name - ; // ******************************************************** MessageId = 5001 Severity = Success Facility = Application SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID Language=English Sample Event Log . ; // - Event message parameters - ; // Language independent insertion strings ; // ******************************************************** MessageId = 5002 Severity = Success Facility = Application SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID Language=English SVC_UPDATE.EXE .
System.Diagnostics.EventInstance
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
EventInstance メンバ
System.Diagnostics 名前空間
System.Diagnostics.EventLog.WriteEvent
System.Diagnostics.EventLogEntry
- EventInstance クラスのページへのリンク