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 関する考慮事項があります。 EventLogには、.NET Framework 2.0 以降のバージョンの特定のアクションに対するアクセス許可、または .NET Framework 1.0 および 1.1 での完全信頼が必要EventLogPermissionです。 部分的に EventLogPermission 信頼されたコードには付与しないことをお勧めします。 イベント ログ オブジェクト (および EventLogEntry オブジェクトなどEventLogEntryCollection) を信頼度の低いコードに渡さないでください。 たとえば、オブジェクトを作成し、エントリを 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

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

適用対象

こちらもご覧ください