EventLog クラス

Windows のイベント ログとの対話を実現します。

この型のすべてのメンバの一覧については、EventLog メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Diagnostics.EventLog

Public Class EventLog
   Inherits Component
   Implements ISupportInitialize
[C#]
public class EventLog : Component, ISupportInitialize
[C++]
public __gc class EventLog : public Component, ISupportInitialize
[JScript]
public class EventLog extends Component implements
   ISupportInitialize

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

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

CreateEventSource の呼び出しで指定したログがコンピュータに存在しない場合は、システムによってカスタム ログが作成され、アプリケーションがそのログのソースとして登録されます。適切なアクセス許可のあるイベント ログに対してエントリの読み取り/書き込みを行うには、 EventLog クラスを使用します。

メモ   セキュリティ ログは読み取り専用です。

イベント ログに書き込む場合は、イベント Source を指定するか、または作成する必要があります。 Source は、アプリケーションを有効なソースとしてイベント ログに登録します。 Source は、同時に 1 つのログに書き込むときだけ使用できます。 Source には任意のランダムな文字列を指定できますが、コンピュータの他のソースとは別の一意の名前である必要があります。通常、ソース名には、アプリケーション名またはその他の識別用文字列を使用します。重複する Source 値を作成しようとすると、例外がスローされます。ただし、単一のイベント ログを複数のソースに関連付けることは可能です。

ログを読み取るには、 EventLogLog 名と MachineName (サーバー コンピュータ名) を指定します。ソースが必要なのはログに書き込む場合だけであるため、 Source を指定する必要はありません。 Entries メンバには、自動的にイベント ログのエントリ リストが設定されます。

メモ    Log/ MachineName のペアを指定してログに接続している場合は、 MachineName を指定する必要はありません。 MachineName を指定しなかった場合は、ローカル コンピュータ "." が想定されます。

イベント ログに書き込む場合は、 message パラメータで送信する情報の種類を指定できます。メッセージを送信するだけではなく、 EventLogEntryType を送信して、そのメッセージが Error ("エラー")、Warning ("警告")、Information ("情報") のいずれであるかを示すことができます。また、イベント ビューアの [イベント] 列と [分類] 列に表示するアプリケーション定義の eventId パラメータおよび category パラメータも指定できます。最後に、特定のイベントに追加情報を関連付ける必要がある場合は、イベント エントリにバイナリ データを付加することもできます。

EventLog クラスは、個別のイベント ログとそのエントリへのアクセスを提供するだけではなく、すべてのイベント ログのコレクションへのアクセスも提供します。 EventLog の静的 (Visual Basic では Shared) メンバを使用すると、ログの削除、ログ リストの取得、ソースの作成または削除、特定のソースがコンピュータに既に存在するかどうかの確認などを行うことができます。

Windows 2000 には、アプリケーション ログ、システム ログ、セキュリティ ログの 3 つの既定のログがあります。Active Directory など、インストールされた他のアプリケーションやサービスでは追加のイベント ログを使用できます。 EventLog を使用してカスタム イベント ログを作成できます。カスタム イベント ログはサーバーのイベント ビューアで表示できます。

イベントのログはディスク容量やプロセッサ時間、その他のシステム リソースを消費します。このため、必要な情報だけをログすることが重要です。パフォーマンスの低下を避けるために、イベント ログの呼び出しはメインのコード パスではなくエラー パスに配置することをお勧めします。

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

使用例

[Visual Basic, C#, C++] ローカル コンピュータ上のイベント ログ "MyNewLog" にエントリを書き込み、ソースが存在しない場合はソース "MySource" を作成する例を次に示します。

[Visual Basic, C#, C++] メモ   コード内でイベント ソースを作成する必要はありません。 Source プロパティで設定したソースが存在しない場合、 WriteEntry メソッドは、イベント ログに書き込む前に、そのソースを作成します。

 
Option Explicit
Option Strict

Imports System
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource") Then
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
        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 'Main 
End Class 'MySample

[C#] 
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")){
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatingEventSource");
        }
                
        // 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.");
        
    }
}
   

[C++] 
#using <mscorlib.dll>
#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(S"MySource")){
        EventLog::CreateEventSource(S"MySource", S"MyNewLog");
        Console::WriteLine(S"CreatingEventSource");
    }

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

    // Write an informational entry to the event log.    
    myLog->WriteEntry(S"Writing to event log.");

}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Diagnostics

プラットフォーム: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

.NET Framework セキュリティ:

参照

EventLog メンバ | System.Diagnostics 名前空間 | EventLogEntry | EntryWrittenEventArgs | ServiceBase