EventLog クラス

定義

Windows イベント ログとの相互作用を提供します。

public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type EventLog = class
    inherit Component
    interface ISupportInitialize
Public Class EventLog
Inherits Component
Implements ISupportInitialize
継承
実装

次の例では、イベントソースがまだ存在しない場合は作成し、 MySource イベントログにエントリを書き込み MyNewLog ます。

注意

Windows Vista 以降では、このアプリケーションを管理者として実行する必要があります。

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      //An event log source should not be created and immediately used.
      //There is a latency time to enable the source, it should be created
      //prior to executing the application that uses the source.
      //Execute this sample a second time to use the new source.
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

注釈

EventLog重要なソフトウェアまたはハードウェアイベントに関する情報を記録する Windows イベントログにアクセスしたり、カスタマイズしたりできます。 を使用 EventLog すると、既存のログを読み取り、ログにエントリを書き込んだり、イベントソースを作成または削除したり、ログを削除したり、ログエントリに応答したりすることができます。 また、イベントソースを作成するときに、新しいログを作成することもできます。

重要

この型は IDisposable インターフェイスを実装します。 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。 直接的に型を破棄するには、try/catch ブロック内で Dispose メソッドを呼び出します。 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。

クラスを使用すると、個々のイベントログとそのエントリにアクセスできるだけでなく、 EventLog すべてのイベントログのコレクションにアクセスすることができます。 のメンバーを使用して、 static EventLog ログの削除、ログ一覧の取得、ソースの作成または削除、またはコンピューターに特定のソースが既に含まれているかどうかの確認を行うことができます。

既定のイベントログには、アプリケーション、システム、およびセキュリティの3つがあります。 セキュリティログは読み取り専用です。 Active Directory など、インストールするその他のアプリケーションやサービスには、追加のイベントログが含まれる場合があります。

クラスを使用する場合は、セキュリティ上の考慮事項があり EventLog ます。 EventLogEventLogPermission.NET Framework 2.0 以降のバージョンでは、特定のアクションに対するアクセス許可、.NET Framework 1.0 と1.1 では完全信頼が必要です。 EventLogPermission部分的に信頼されたコードには許可しないことをお勧めします。 オブジェクトやオブジェクトなどのイベントログオブジェクトを、 EventLogEntryCollection EventLogEntry より信頼度の低いコードに渡すことは避けてください。 たとえば、オブジェクトを作成し、 EventLog エントリを記述してから、その EventLog オブジェクトを部分信頼コードに渡すと、セキュリティ上の問題が発生する可能性があります。これは、イベントログに対して読み取りと書き込みを行う機能によって、コードが別のアプリケーションの名前でイベントログメッセージを発行するなどの操作を実行できるためです。

Windows Vista 以降では、ユーザーアカウント制御 (UAC) によってユーザーの資格情報が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 セキュリティログにアクセスするコードを実行するには、まず、資格情報を標準ユーザーから管理者に昇格させる必要があります。 アプリケーションを起動するときに、アプリケーションのショートカットメニューを開き (マウスを使用している場合はアプリケーションアイコンを右クリックして)、管理者として実行することを指定します。

を使用 EventLog すると、サーバーのイベントビューアーを通じて表示できるカスタムイベントログを作成できます。 メソッドを使用して RegisterDisplayName 、イベントビューアーにイベントログのローカライズされた名前を表示します。 メソッドを使用して、 ModifyOverflowPolicy ログの最大サイズに達したときのイベントログの動作を構成します。

イベントログから読み取るには、ログ名 ( Log プロパティ) とサーバーコンピューター名 ( MachineName イベントログのプロパティ) を指定します。 サーバーコンピューター名を指定しない場合は、ローカルコンピューター "." が使用されます。 Sourceソースはログに書き込むためにのみ必要であるため、イベントソース (プロパティ) を指定する必要はありません。 Entriesプロパティには、イベントログのエントリの一覧が自動的に入力されます。

イベントログに書き込むには、イベントソース (プロパティ) を指定または作成し Source ます。 新しいイベントソースを作成するには、コンピューターの管理者の資格情報が必要です。 イベントソースは、アプリケーションを有効なエントリのソースとしてイベントログに登録します。 イベントソースを使用すると、一度に1つのログにのみ書き込むことができます。 プロパティには Source 任意のランダムな文字列を指定できますが、名前はコンピューター上の他のソースと区別する必要があります。 イベントソースは、通常、アプリケーションの名前、または別の識別文字列です。 重複する値を作成しようとすると Source 、例外がスローされます。 ただし、1つのイベントログを複数のソースに関連付けることができます。

インスタンスに関連付けられているイベントログのイベントソースが存在しない場合は EventLog 、新しいイベントソースが作成されます。 Windows Vista 以降または Windows Server 2003 でイベントソースを作成するには、管理者の資格情報が必要です。

この要件は、イベントソースが一意であるかどうかを確認するために、セキュリティログを含むすべてのイベントログを検索する必要があるためです。 Windows Vista 以降では、セキュリティログへのアクセス許可がユーザーに付与されていません。したがって、 SecurityException がスローされます。

重要

イベントソースを作成または削除するには、名前付きミューテックスを使用して、基になるコードを同期する必要があります。 高い特権を持つアプリケーションが名前付きミューテックスをロックした場合、イベントソースを作成または削除しようとすると、ロックが解除されるまでアプリケーションは応答を停止します。 この問題を回避するには、 UnmanagedCode 信頼されていないコードに権限を付与しないでください。 また、 UnmanagedCode アクセス許可によって他のアクセス許可がバイパスされ、信頼性の高いコードにのみ付与される可能性があります。

アプリケーションとサービスは、アプリケーションログまたはカスタムログに書き込む必要があります。 デバイスドライバーは、システムログに書き込む必要があります。 プロパティを明示的に設定しない場合、 Log イベントログの既定値はアプリケーションログになります。

注意

アプリケーションが登録されたソースとして書き込むことを保護することはできません。 アプリケーションにアクセス許可が付与されている場合 Write 、コンピューターに登録されている有効なソースのイベントを書き込むことができます。

WriteEvent WriteEntry イベントログにイベントを書き込むには、メソッドとメソッドを使用します。 イベントを書き込むには、イベントソースを指定する必要があります。ソースとの最初のエントリを書き込む前に、イベントソースを作成して構成する必要があります。

アプリケーションのインストール時に新しいイベントソースを作成します。 これにより、オペレーティングシステムが登録済みのイベントソースとその構成の一覧を更新できるようになります。 オペレーティングシステムがイベントソースの一覧を更新していない状態で、新しいソースでイベントを作成しようとすると、書き込み操作は失敗します。 オブジェクトまたはメソッドを使用して、新しいソースを構成でき EventLogInstaller CreateEventSource ます。 新しいイベントソースを作成するには、コンピューターの管理者の資格情報が必要です。

各ソースは一度に1つのイベントログにのみ書き込むことができます。ただし、アプリケーションで複数のソースを使用して複数のイベントログに書き込むことができます。 たとえば、アプリケーションによっては、異なるイベントログまたは異なるリソースファイル用に複数のソースが構成されている必要があります。 既存のソースの構成の詳細を変更するには、ソースを削除してから、新しい構成を使用して作成する必要があります。 他のアプリケーションまたはコンポーネントが既存のソースを使用する場合は、既存のソースを削除するのではなく、更新された構成で新しいソースを作成します。

イベントソースは、イベントカテゴリとメッセージ文字列のローカライズされたリソースに登録できます。 アプリケーションでは、実際の文字列値を指定する代わりに、リソース識別子を使用してイベントログエントリを書き込むことができます。 EventLogInstaller EventSourceCreationData リソースファイルを使用したソースの構成の詳細については、クラスおよびクラスを参照してください。

アプリケーションが文字列値をイベントログに直接書き込む場合は、ソースのリソースファイルプロパティを設定する必要はありません。 ソースは、ローカライズされたエントリを書き込むか、または直接文字列を書き込むために構成する必要があります。 アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2つの異なるソースを登録する必要があります。 たとえば、リソースファイルを使用して1つのソースを構成し、そのソースをメソッドで使用し WriteEvent て、リソース識別子を使用してエントリをイベントログに書き込みます。 次に、リソースファイルを含まない別のソースを作成し、そのソースをメソッドで使用して、そのソースを WriteEntry 使用して、イベントログに直接文字列を書き込みます。

イベントを作成する場合は、少なくともメッセージ文字列のメッセージ文字列またはリソース識別子を指定する必要があります。 その他のイベントプロパティは省略可能です。 オプションのイベント設定の例を次に示します。

  • を設定して、 EventLogEntryType イベントビューアーがエントリに表示するアイコンを指定できます。

  • アプリケーションでカテゴリを使用してイベントをフィルター処理する場合は、イベントのカテゴリ識別子を指定できます。

  • 指定したイベントに追加情報を関連付ける場合は、イベントエントリにバイナリデータを添付できます。

重要

イベントログは、ディスク領域、プロセッサ時間、およびその他のシステムリソースを消費します。 重要な情報のみをログに記録することが重要です。 イベントログの呼び出しは、メインコードパスではなくエラーパスに配置することをお勧めします。これにより、パフォーマンスに悪影響を与えません。

のインスタンスの初期プロパティ値の一覧につい EventLog ては、コンストラクターを参照してください EventLog

コンストラクター

EventLog()

EventLog クラスの新しいインスタンスを初期化します。 このインスタンスは、ログとは関連付けられません。

EventLog(String)

EventLog クラスの新しいインスタンスを初期化します。 ローカル コンピューター上のログにインスタンスを関連付けます。

EventLog(String, String)

EventLog クラスの新しいインスタンスを初期化します。 指定したコンピューター上のログにインスタンスを関連付けます。

EventLog(String, String, String)

EventLog クラスの新しいインスタンスを初期化します。 指定したコンピューター上のログにインスタンスを関連付け、指定したソースを作成するか、または EventLog に割り当てます。

プロパティ

CanRaiseEvents

コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。

(継承元 Component)
Container

IContainer を含む Component を取得します。

(継承元 Component)
DesignMode

Component が現在デザイン モードかどうかを示す値を取得します。

(継承元 Component)
EnableRaisingEvents

EventLogEntryWritten イベント通知を受信するかどうかを示す値を取得または設定します。

Entries

イベント ログの内容を取得します。

Events

Component に結び付けられているイベント ハンドラーのリストを取得します。

(継承元 Component)
Log

読み取るログまたは書き込むログの名前を取得または設定します。

LogDisplayName

イベント ログの表示名を取得します。

MachineName

イベントを読み取るコンピューターまたは書き込むコンピューターの名前を取得または設定します。

MaximumKilobytes

イベント ログの最大サイズを KB 単位で取得または設定します。

MinimumRetentionDays

イベント ログ内のエントリを保持する日数を取得します。

OverflowAction

イベント ログが最大ファイル サイズに達した場合に、新しいエントリを格納するように構成された動作を取得します。

Site

ComponentISite を取得または設定します。

(継承元 Component)
Source

イベント ログを書き込むときに登録して使用するソース名を取得または設定します。

SynchronizingObject

EventLog エントリ書き込みイベントの結果として発行されるイベント ハンドラー呼び出しをマーシャリングするために使用するオブジェクトを取得または設定します。

メソッド

BeginInit()

フォームまたは別のコンポーネントで使用される EventLog の初期化を開始します。 初期化は実行時に発生します。

Clear()

イベント ログからすべてのエントリを削除します。

Close()

イベント ログを閉じ、読み取りハンドルと書き込みハンドルを解放します。

CreateEventSource(EventSourceCreationData)

イベント ソースおよび対応するイベント ログに指定された構成プロパティを使用して、ローカライズされたイベント メッセージを書き込むための有効なイベント ソースを設定します。

CreateEventSource(String, String)

ローカル コンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 また、このメソッドによってローカル コンピューター上に新しいカスタム ログを作成することもできます。

CreateEventSource(String, String, String)
互換性のために残されています。
互換性のために残されています。
互換性のために残されています。
互換性のために残されています。

指定したコンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 このメソッドを使用して、指定したコンピューター上に新しいカスタム ログを作成することもできます。

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
Delete(String)

ローカル コンピューターからイベント ログを削除します。

Delete(String, String)

指定したコンピューターからイベント ログを削除します。

DeleteEventSource(String)

ローカル コンピューターのイベント ログからイベント ソースの登録を削除します。

DeleteEventSource(String, String)

指定したコンピューターからアプリケーションのイベント ソース登録を削除します。

Dispose()

Component によって使用されているすべてのリソースを解放します。

(継承元 Component)
Dispose(Boolean)

EventLog が使用しているアンマネージド リソースを解放します。オプションとして、マネージド リソースを解放することもできます。

EndInit()

フォームまたは別のコンポーネントで使用される EventLog の初期化を終了します。 初期化は実行時に発生します。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Exists(String)

ローカル コンピューター上にログが存在するかどうかを確認します。

Exists(String, String)

指定したコンピューター上にログが存在するかどうかを確認します。

GetEventLogs()

ローカル コンピューター上のすべてのイベント ログを検索し、リストを格納する EventLog オブジェクトの配列を作成します。

GetEventLogs(String)

指定したコンピューター上のすべてのイベント ログを検索し、リストを格納する EventLog オブジェクトの配列を作成します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()
互換性のために残されています。

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。

(継承元 Component)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()
互換性のために残されています。

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
LogNameFromSourceName(String, String)

指定したソースが登録されているログの名前を取得します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

イベント ログが最大ファイル サイズに達した場合に、新しいエントリを書き込むように構成された動作を変更します。

RegisterDisplayName(String, Int64)

イベント ログのローカライズされた名前を指定します。これは、サーバーのイベント ビューアーに表示されます。

SourceExists(String)

ローカル コンピューターにイベント ソースが登録されているかどうかを確認します。

SourceExists(String, String)

指定したコンピューターにイベント ソースが登録されているかどうかを確認します。

ToString()

Component の名前 (存在する場合) を格納する String を返します。 このメソッドはオーバーライドできません。

(継承元 Component)
WriteEntry(String)

種類が Information のエントリを、指定したメッセージ テキストと共にイベント ログに書き込みます。

WriteEntry(String, EventLogEntryType)

エラー、警告、情報、監査正常終了、または監査エラー エントリを、指定したメッセージ テキストと共にイベント ログに書き込みます。

WriteEntry(String, EventLogEntryType, Int32)

エントリを、指定したメッセージ テキストおよびアプリケーション定義のイベント識別子と共にイベント ログに書き込みます。

WriteEntry(String, EventLogEntryType, Int32, Int16)

指定したメッセージ テキスト、アプリケーション定義のイベント識別子、およびアプリケーション定義のカテゴリと共にエントリをイベント ログに書き込みます。

WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

指定したメッセージ テキスト、アプリケーション定義のイベント識別子、およびアプリケーション定義のカテゴリと共にエントリをイベント ログに書き込み、メッセージにバイナリ データを付加します。

WriteEntry(String, String)

指定した登録イベント ソースを使用して、種類が Information のエントリを、指定したメッセージ テキストと共にイベント ログに書き込みます。

WriteEntry(String, String, EventLogEntryType)

指定した登録イベント ソースを使用して、エラー、警告、情報、監査正常終了、または監査エラー エントリを、指定したメッセージ テキストと共にイベント ログに書き込みます。

WriteEntry(String, String, EventLogEntryType, Int32)

指定した登録イベント ソースを使用して、指定したメッセージ テキストおよびアプリケーション定義のイベント識別子と共にエントリをイベント ログに書き込みます。

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

指定した登録イベント ソースを使用して、メッセージ テキスト、アプリケーション定義のイベント識別子、およびアプリケーション定義のカテゴリと共にエントリをイベント ログに書き込みます。 category は、イベント ビューアーでログ内のイベントをフィルター処理するときに使用できます。

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

指定した登録イベント ソースを使用して、指定したメッセージ テキスト、アプリケーション定義のイベント識別子、およびアプリケーション定義のカテゴリと共にエントリをイベント ログに書き込み、メッセージにバイナリ データを付加します。

WriteEvent(EventInstance, Byte[], Object[])

指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。

WriteEvent(EventInstance, Object[])

ローカライズされたエントリをイベント ログに書き込みます。

WriteEvent(String, EventInstance, Byte[], Object[])

指定した登録イベント ソースを使用して、指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。

WriteEvent(String, EventInstance, Object[])

指定した登録イベント ソースを使用して、指定したイベント データとメッセージ置換文字列と共にイベント ログ エントリを書き込みます。

イベント

Disposed

Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。

(継承元 Component)
EntryWritten

ローカル コンピューター上のイベント ログにエントリが書き込まれたときに発生します。

適用対象

こちらもご覧ください