方法 : イベント ログにエントリを書き込む

更新 : 2007 年 11 月

イベント ログにエントリを書き込む場合は、ログに文字列として書き込むメッセージを指定します。メッセージには、問題の原因と解決方法を説明するすべての情報が含まれている必要があります。

ログにエントリを書き込む方法は 2 とおりあり、どちらも等しく有効な方法です。最も直接的な方法は、書き込み先のログにイベント ソースを登録し、コンポーネントのインスタンスを作成してから、そのログに Source プロパティを設定し、最後に WriteEntry を呼び出す方法です。この方法を使用すると、コンポーネントのインスタンスに Log プロパティを設定する必要がなくなります。既に登録されているソースに接続すると、ログは自動的に決定されます。ソースの登録の詳細については、「方法 : アプリケーションをイベント ログ エントリのソースとして追加する」を参照してください。

ログにエントリを書き込むもう 1 つの方法は、EventLog コンポーネントのインスタンスを作成し、SourceMachineName、および Log の各プロパティを設定してから、WriteEntry メソッドを呼び出す方法です。この方法では、WriteEntry メソッドがソースの有無を確認し、存在しない場合はすぐにソースを登録します。

正常にログ エントリを書き込むには、以下の条件を満たす必要があります。

  • 目的のログにソースが登録されている。

    k00ce235.alert_note(ja-jp,VS.90).gifメモ :

    ログにエントリを書き込むには、EventLog コンポーネントのインスタンスの Source プロパティを設定する必要があります。コンポーネントによってエントリが書き込まれる場合、システムは、書き込み先のイベント ログに指定したソースが登録されているかどうかを自動的にチェックし、必要に応じて CreateEventSource を呼び出します。通常は、アプリケーションのインストール中に新しいイベント ソースを作成します。これにより、オペレーティング システムが登録済みのイベント ソースとその設定の一覧を更新する時間ができます。オペレーティング システムがイベント ソースの一覧を更新しないうちに、新しいソースを使用してイベントを書き込もうとすると、書き込み操作が失敗します。インストール中にソースを作成しない場合は、最初の書き込み操作よりもかなり前の時点で (アプリケーションの初期化時など)、ソースを作成してください。この方法を採用する場合は、初期化コードを必ずコンピュータの管理者権限で実行します。新しいイベント ソースを作成するには管理者権限が必要です。

  • 指定したメッセージのサイズが、16 K 未満である。

  • アプリケーションに書き込み先ログの書き込みアクセス権が与えられている。詳細については、「イベント ログへのアクセス権」を参照してください。

エントリを書き込むときに、複数のパラメータを指定できます。指定できるパラメータには、作成中のエントリの種類、イベントを識別する ID、カテゴリ、エントリに付け加える任意のバイナリ データなどがあります。

イベント ログ エントリを書き込むには

  1. EventLog コンポーネントのインスタンスを作成します。詳細については、「方法 : EventLog コンポーネントのインスタンスを作成する」を参照してください。

  2. CreateEventSource メソッドを使用して、エントリの書き込み先のログにイベント ソースを登録します。ソース文字列には、一意の文字列を使用します。コンポーネントの Source プロパティに、登録したソースを設定します。詳細については、「方法 : EventLog コンポーネントのインスタンスを設定する」を参照してください。WriteEntry メソッドを呼び出し、ログに書き込むエントリを指定します。

    If Not EventLog.SourceExists("MyApp1") Then
        EventLog.CreateEventSource("MyApp1", "Application")
    End If
    EventLog1.Source = "MyApp1"
    EventLog1.WriteEntry("This is a simple event log entry")
    
         if (!System.Diagnostics.EventLog.SourceExists("MyApp1"))
                System.Diagnostics.EventLog.CreateEventSource(
                   "MyApp1", "Application");
    
            EventLog1.Source = "MyApp";
            EventLog1.WriteEntry("This is a simple event log entry");
    

ローカライズされたイベント ログ エントリを書き込むには

  1. EventLog コンポーネントのインスタンスを作成します。詳細については、「方法 : EventLog コンポーネントのインスタンスを作成する」を参照してください。

  2. ローカライズされたイベント ログ エントリを書き込むには、WriteEvent メソッドを使用します。その場合は、イベント プロパティに対して文字列値ではなくリソース識別子を指定します。イベント ビューアは、このリソース識別子に基づいて、ソースに関するローカライズされたリソース ファイルから対応する文字列を表示します。リソース識別子を使用してイベントを書き込む前に、そのソースを対応するリソース ファイルに登録する必要があります。リソース ファイルの登録方法については、「EventSourceCreationData クラス」を参照してください。

    If Not EventLog.SourceExists("MyApp1") Then
        EventLog.CreateEventSource("MyApp1", "Application")
    End If
    EventLog1.Source = "MyApp1"
    EventLog1.WriteEvent(New EventInstance(1, 1), New String() {"message"})
    
         if (!System.Diagnostics.EventLog.SourceExists("MyApp1"))
                System.Diagnostics.EventLog.CreateEventSource(
                   "MyApp1", "Application");
    
            EventLog1.Source = "MyApp";
            EventLog1.WriteEvent(new System.Diagnostics.EventInstance(1, 1), new string[] { "message" });
    

参照

処理手順

方法 : EventLog コンポーネントのインスタンスを設定する

方法 : EventLog コンポーネントのインスタンスを作成する

方法 : アプリケーションをイベント ログ エントリのソースとして追加する

チュートリアル : イベント ログ、イベント ソース、およびエントリの基礎

概念

EventLog コンポーネントの概要

参照

EventLog