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 値を作成しようとすると、例外がスローされます。ただし、単一のイベント ログを複数のソースに関連付けることは可能です。
ログを読み取るには、 EventLog に Log 名と 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 セキュリティ:
- SecurityPermission (完全信頼を指定して EventLog のメンバを呼び出すためのアクセス許可) PermissionState.Unrestricted (関連する列挙体)
参照
EventLog メンバ | System.Diagnostics 名前空間 | EventLogEntry | EntryWrittenEventArgs | ServiceBase