EventLog.WriteEvent メソッド

定義

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

オーバーロード

WriteEvent(String, EventInstance, Object[])

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

WriteEvent(EventInstance, Object[])

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

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

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

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

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

WriteEvent(String, EventInstance, Object[])

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

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

public:
 static void WriteEvent(System::String ^ source, System::Diagnostics::EventInstance ^ instance, ... cli::array <System::Object ^> ^ values);
public static void WriteEvent (string source, System.Diagnostics.EventInstance instance, params object[] values);
static member WriteEvent : string * System.Diagnostics.EventInstance * obj[] -> unit
Public Shared Sub WriteEvent (source As String, instance As EventInstance, ParamArray values As Object())

パラメーター

source
String

指定したコンピューター上のアプリケーションに登録されるイベント ソースの名前。

instance
EventInstance

ローカライズされたイベント ログ エントリを表す EventInstance インスタンス。

values
Object[]

イベント ログ エントリのメッセージ テキストにマージする文字列の配列。

例外

source 値が空の文字列 ("") です。

- または -

source 値は null です。

- または -

instance.InstanceId が 0 より小さいか 、UInt16.MaxValue より大きい。

- または -

values には 256 を超える要素が格納されています。

- または -

values 要素の 1 つが 32766 バイトを超えています。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

instancenullです。

イベント ログのレジストリ キーを開けませんでした。

イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 Windows のエラー コードは使用できません。

次の例では、情報イベント エントリと警告イベント エントリを既存のイベント ログに書き込みます。 イベント メッセージ テキストは、リソース ファイル内のリソース識別子を使用して指定されます。 この例では、対応するリソース ファイルがソースに登録されていることを前提としています。

String^ sourceName = "SampleApplicationSource";
if ( EventLog::SourceExists( sourceName ) )
{
   
   // Define an informational event and a warning event.
   // The message identifiers correspond to the message text in the
   // message resource file defined for the source.
   EventInstance ^ myInfoEvent = gcnew EventInstance( InformationMsgId,0,EventLogEntryType::Information );
   EventInstance ^ myWarningEvent = gcnew EventInstance( WarningMsgId,0,EventLogEntryType::Warning );
   
   // Insert the method name into the event log message.
   array<String^>^insertStrings = {"EventLogSamples.WriteEventSample2"};
   
   // Write the events to the event log.
   EventLog::WriteEvent( sourceName, myInfoEvent, 0 );
   
   // Append binary data to the warning event entry.
   array<Byte>^binaryData = {7,8,9,10};
   EventLog::WriteEvent( sourceName, myWarningEvent, binaryData, insertStrings );
}
else
{
   Console::WriteLine( "Warning - event source {0} not registered", sourceName );
}

string sourceName = "SampleApplicationSource";
if(EventLog.SourceExists(sourceName))
{

    // Define an informational event and a warning event.

    // The message identifiers correspond to the message text in the
    // message resource file defined for the source.
    EventInstance myInfoEvent = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information);
    EventInstance myWarningEvent = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning);

    // Insert the method name into the event log message.
    string [] insertStrings = {"EventLogSamples.WriteEventSample2"};

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

    // Append binary data to the warning event entry.
    byte [] binaryData = { 7, 8, 9, 10 };
    EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings);
}
else
{
    Console.WriteLine("Warning - event source {0} not registered",
        sourceName);
}
           Dim sourceName As String = "SampleApplicationSource"
           If EventLog.SourceExists(sourceName)
  
               ' Define an informational event and a warning event.

               ' The message identifiers correspond to the message text in the
               ' message resource file defined for the source.
               Dim myInfoEvent As EventInstance = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information)
               Dim myWarningEvent As EventInstance = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning)

               ' Insert the method name into the event log message.
               Dim insertStrings() As String = {"EventLogSamples.WriteEventSample2"}
           
               ' Write the events to the event log.

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

               ' Append binary data to the warning event entry.
               Dim binaryData() As Byte = { 7, 8, 9, 10 }
               EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings)
           Else 
               Console.WriteLine("Warning - event source {0} not registered", _
                   sourceName)
           End If

この例では、リソース ライブラリ EventLogMsgs.dll に組み込まれている次のメッセージ テキスト ファイルを使用します。 メッセージ テキスト ファイルは、メッセージ リソース ファイルの作成元のソースです。 メッセージ テキスト ファイルは、カテゴリ、イベント メッセージ、およびパラメーター挿入文字列のリソース識別子とテキストを定義します。

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

注釈

適切なログのイベント ソースとして既に登録されているソースを使用して、ローカライズされたエントリをイベント ログに書き込むには、このメソッドを使用します。 イベント プロパティは、文字列値ではなくリソース識別子で指定します。 イベント ビューアーは、リソース識別子を使用して、ソースのローカライズされたリソース ファイルの対応する文字列を表示します。 リソース識別子を使用してイベントを記述する前に、ソースを対応するリソース ファイルに登録する必要があります。

入力 instance インスタンスは、イベント メッセージとプロパティを指定します。 InstanceIdinstanceソース メッセージ リソース ファイルで定義されているメッセージの入力の を設定します。 必要に応じて、入力の と EntryTypeinstance設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージに置換文字列の書式設定プレースホルダーが含まれていない場合は、 を にnull設定valuesします。

を使用 WriteEventする前に、指定したソースをイベント ログに登録する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。

最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を書き込む目的で構成する必要があります。 アプリケーションが WriteEntry 文字列値をイベント ログに直接書き込む場合は、 メソッドを使用します。

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

こちらもご覧ください

適用対象

WriteEvent(EventInstance, Object[])

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

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

public:
 void WriteEvent(System::Diagnostics::EventInstance ^ instance, ... cli::array <System::Object ^> ^ values);
public void WriteEvent (System.Diagnostics.EventInstance instance, params object[] values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent (System.Diagnostics.EventInstance instance, params object[] values);
member this.WriteEvent : System.Diagnostics.EventInstance * obj[] -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteEvent : System.Diagnostics.EventInstance * obj[] -> unit
Public Sub WriteEvent (instance As EventInstance, ParamArray values As Object())

パラメーター

instance
EventInstance

ローカライズされたイベント ログ エントリを表す EventInstance インスタンス。

values
Object[]

イベント ログ エントリのメッセージ テキストにマージする文字列の配列。

属性

例外

SourceEventLog プロパティが設定されていません。

- または -

メソッドが新しいイベント ソースを登録しようとしましたが、MachineName のコンピューター名が無効です。

- または -

ソースは既に別のイベント ログに登録されています。

- または -

instance.InstanceId が 0 より小さいか 、UInt16.MaxValue より大きい。

- または -

values には 256 を超える要素が格納されています。

- または -

values 要素の 1 つが 32766 バイトを超えています。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

instancenullです。

イベント ログのレジストリ キーを開けませんでした。

イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 Windows のエラー コードは使用できません。

次の例では、イベント ログ に 2 つの監査エントリを書き込みます myNewLog。 この例では、ローカル コンピューターに存在しない場合は、新しいイベント ソースと新しいイベント ログを作成します。 イベント メッセージ テキストは、リソース ファイル内のリソース識別子を使用して指定されます。

// Create the event source if it does not exist.
String^ sourceName = "SampleApplicationSource";
if (  !EventLog::SourceExists( sourceName ) )
{
   
   // Call a local method to register the event log source
   // for the event log "myNewLog."  Use the resource file
   // EventLogMsgs.dll in the current directory for message text.
   String^ messageFile = String::Format( "{0}\\{1}", System::Environment::CurrentDirectory, "EventLogMsgs.dll" );
   CreateEventSourceSample1( messageFile );
}

// Get the event log corresponding to the existing source.
String^ myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );

// Define two audit events.
// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance ^ myAuditSuccessEvent = gcnew EventInstance( AuditSuccessMsgId,0,EventLogEntryType::SuccessAudit );
EventInstance ^ myAuditFailEvent = gcnew EventInstance( AuditFailedMsgId,0,EventLogEntryType::FailureAudit );

// Insert the method name into the event log message.
array<String^>^insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.
myEventLog->WriteEvent( myAuditSuccessEvent, insertStrings );

// Append binary data to the audit failure event entry.
array<Byte>^binaryData = {3,4,5,6};
myEventLog->WriteEvent( myAuditFailEvent, binaryData, insertStrings );

// Create the event source if it does not exist.
string sourceName = "SampleApplicationSource";
if(!EventLog.SourceExists(sourceName))
{
    // Call a local method to register the event log source
    // for the event log "myNewLog."  Use the resource file
    // EventLogMsgs.dll in the current directory for message text.

    string messageFile =  String.Format("{0}\\{1}",
        System.Environment.CurrentDirectory,
        "EventLogMsgs.dll");

    CreateEventSourceSample1(messageFile);
}

// Get the event log corresponding to the existing source.
string myLogName = EventLog.LogNameFromSourceName(sourceName,".");

EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

// Define two audit events.

// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance myAuditSuccessEvent = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit);
EventInstance myAuditFailEvent = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit);

// Insert the method name into the event log message.
string [] insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

// Append binary data to the audit failure event entry.
byte [] binaryData = { 3, 4, 5, 6 };
myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings);

           Dim sourceName As String = "SampleApplicationSource"

           ' Create the event source if it does not exist.
           If Not EventLog.SourceExists(sourceName)
  
               ' Call a local method to register the event log source
               ' for the event log "myNewLog."  Use the resource file
               ' EventLogMsgs.dll in the current directory for message text.

               Dim messageFile As String =  String.Format("{0}\\{1}", _
                   System.Environment.CurrentDirectory, _
                   "EventLogMsgs.dll")

               CreateEventSourceSample1(messageFile)
           End If 

           ' Get the event log corresponding to the existing source.
           Dim myLogName As String = EventLog.LogNameFromSourceName(sourceName,".")
       
           Dim myEventLog As EventLog = new EventLog(myLogName, ".", sourceName)

           ' Define two audit events.
           Dim myAuditSuccessEvent As EventInstance = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit)
           Dim myAuditFailEvent As EventInstance = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit)

           ' Insert the method name into the event log message.
           Dim insertStrings() As String = {"EventLogSamples.WriteEventSample1"}
           
           ' Write the events to the event log.

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

           ' Append binary data to the audit failure event entry.
           Dim binaryData() As Byte = { 7, 8, 9, 10 }
           myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings)

この例では、リソース ライブラリ EventLogMsgs.dll に組み込まれている次のメッセージ テキスト ファイルを使用します。 メッセージ テキスト ファイルは、メッセージ リソース ファイルの作成元のソースです。 メッセージ テキスト ファイルは、カテゴリ、イベント メッセージ、およびパラメーター挿入文字列のリソース識別子とテキストを定義します。

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

注釈

ローカライズされたエントリをイベント ログに書き込むには、このメソッドを使用します。 イベント プロパティは、文字列値ではなくリソース識別子で指定します。 イベント ビューアーは、リソース識別子を使用して、 のローカライズされたリソース ファイルの対応する文字列をSource表示します。 リソース識別子を使用してイベントを記述する前に、ソースを対応するリソース ファイルに登録する必要があります。

入力 instance インスタンスは、イベント メッセージとプロパティを指定します。 InstanceIdinstanceソース メッセージ リソース ファイルで定義されているメッセージの入力の を設定します。 必要に応じて、入力の と EntryTypeinstance設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージに置換文字列の書式設定プレースホルダーが含まれていない場合は、 を にnull設定valuesします。

を使用WriteEventする前に、Sourceコンポーネントに プロパティをEventLog設定する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。

最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を記述するように構成する必要があります。 アプリケーションがイベント ログに WriteEntry 文字列値を直接書き込む場合は、 メソッドを使用します。

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

注意

リモート コンピューターにエントリを書き込む場合、リモート コンピューターが.NET Frameworkを実行していない場合、文字列の値messageが予期した値ではない可能性があります。 また、イベント ビューアーでは message 挿入文字列として扱われるため、文字列に %n を含めることはできません。 n は整数値 (%1 など) です。 インターネット プロトコルバージョン 6 (IPv6) アドレスにはこの文字シーケンスを含めることができるため、IPv6 アドレスを含むイベント メッセージをログに記録することはできません。

こちらもご覧ください

適用対象

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

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

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

public:
 void WriteEvent(System::Diagnostics::EventInstance ^ instance, cli::array <System::Byte> ^ data, ... cli::array <System::Object ^> ^ values);
public void WriteEvent (System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent (System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
member this.WriteEvent : System.Diagnostics.EventInstance * byte[] * obj[] -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteEvent : System.Diagnostics.EventInstance * byte[] * obj[] -> unit
Public Sub WriteEvent (instance As EventInstance, data As Byte(), ParamArray values As Object())

パラメーター

instance
EventInstance

ローカライズされたイベント ログ エントリを表す EventInstance インスタンス。

data
Byte[]

エントリに関連付けられているバイナリ データを保持するバイト配列。

values
Object[]

イベント ログ エントリのメッセージ テキストにマージする文字列の配列。

属性

例外

SourceEventLog プロパティが設定されていません。

- または -

メソッドが新しいイベント ソースを登録しようとしましたが、MachineName のコンピューター名が無効です。

- または -

ソースは既に別のイベント ログに登録されています。

- または -

instance.InstanceId が 0 より小さいか 、UInt16.MaxValue より大きい。

- または -

values には 256 を超える要素が格納されています。

- または -

values 要素の 1 つが 32766 バイトを超えています。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

instancenullです。

イベント ログのレジストリ キーを開けませんでした。

イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 Windows のエラー コードは使用できません。

次の例では、イベント ログ に 2 つの監査エントリを書き込みます myNewLog。 この例では、ローカル コンピューターに存在しない場合は、新しいイベント ソースと新しいイベント ログを作成します。 イベント メッセージ テキストは、リソース ファイル内のリソース識別子を使用して指定されます。

// Create the event source if it does not exist.
String^ sourceName = "SampleApplicationSource";
if (  !EventLog::SourceExists( sourceName ) )
{
   
   // Call a local method to register the event log source
   // for the event log "myNewLog."  Use the resource file
   // EventLogMsgs.dll in the current directory for message text.
   String^ messageFile = String::Format( "{0}\\{1}", System::Environment::CurrentDirectory, "EventLogMsgs.dll" );
   CreateEventSourceSample1( messageFile );
}

// Get the event log corresponding to the existing source.
String^ myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );

// Define two audit events.
// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance ^ myAuditSuccessEvent = gcnew EventInstance( AuditSuccessMsgId,0,EventLogEntryType::SuccessAudit );
EventInstance ^ myAuditFailEvent = gcnew EventInstance( AuditFailedMsgId,0,EventLogEntryType::FailureAudit );

// Insert the method name into the event log message.
array<String^>^insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.
myEventLog->WriteEvent( myAuditSuccessEvent, insertStrings );

// Append binary data to the audit failure event entry.
array<Byte>^binaryData = {3,4,5,6};
myEventLog->WriteEvent( myAuditFailEvent, binaryData, insertStrings );

// Create the event source if it does not exist.
string sourceName = "SampleApplicationSource";
if(!EventLog.SourceExists(sourceName))
{
    // Call a local method to register the event log source
    // for the event log "myNewLog."  Use the resource file
    // EventLogMsgs.dll in the current directory for message text.

    string messageFile =  String.Format("{0}\\{1}",
        System.Environment.CurrentDirectory,
        "EventLogMsgs.dll");

    CreateEventSourceSample1(messageFile);
}

// Get the event log corresponding to the existing source.
string myLogName = EventLog.LogNameFromSourceName(sourceName,".");

EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

// Define two audit events.

// The message identifiers correspond to the message text in the
// message resource file defined for the source.
EventInstance myAuditSuccessEvent = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit);
EventInstance myAuditFailEvent = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit);

// Insert the method name into the event log message.
string [] insertStrings = {"EventLogSamples.WriteEventSample1"};

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

// Append binary data to the audit failure event entry.
byte [] binaryData = { 3, 4, 5, 6 };
myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings);

           Dim sourceName As String = "SampleApplicationSource"

           ' Create the event source if it does not exist.
           If Not EventLog.SourceExists(sourceName)
  
               ' Call a local method to register the event log source
               ' for the event log "myNewLog."  Use the resource file
               ' EventLogMsgs.dll in the current directory for message text.

               Dim messageFile As String =  String.Format("{0}\\{1}", _
                   System.Environment.CurrentDirectory, _
                   "EventLogMsgs.dll")

               CreateEventSourceSample1(messageFile)
           End If 

           ' Get the event log corresponding to the existing source.
           Dim myLogName As String = EventLog.LogNameFromSourceName(sourceName,".")
       
           Dim myEventLog As EventLog = new EventLog(myLogName, ".", sourceName)

           ' Define two audit events.
           Dim myAuditSuccessEvent As EventInstance = new EventInstance(AuditSuccessMsgId, 0, EventLogEntryType.SuccessAudit)
           Dim myAuditFailEvent As EventInstance = new EventInstance(AuditFailedMsgId, 0, EventLogEntryType.FailureAudit)

           ' Insert the method name into the event log message.
           Dim insertStrings() As String = {"EventLogSamples.WriteEventSample1"}
           
           ' Write the events to the event log.

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

           ' Append binary data to the audit failure event entry.
           Dim binaryData() As Byte = { 7, 8, 9, 10 }
           myEventLog.WriteEvent(myAuditFailEvent, binaryData, insertStrings)

この例では、リソース ライブラリ EventLogMsgs.dll に組み込まれている次のメッセージ テキスト ファイルを使用します。 メッセージ テキスト ファイルは、メッセージ リソース ファイルの作成元のソースです。 メッセージ テキスト ファイルは、カテゴリ、イベント メッセージ、およびパラメーター挿入文字列のリソース識別子とテキストを定義します。

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

注釈

イベント ログに追加のイベント固有データを含むローカライズされたエントリを書き込むには、このメソッドを使用します。 イベント プロパティは、文字列値ではなくリソース識別子で指定します。 イベント ビューアーは、リソース識別子を使用して、 のローカライズされたリソース ファイルの対応する文字列をSource表示します。 リソース識別子を使用してイベントを書き込む前に、ソースを対応するリソース ファイルに登録する必要があります。

入力 instance インスタンスは、イベント メッセージとプロパティを指定します。 InstanceIdソース メッセージ リソース ファイル内instanceの定義されたメッセージの入力の を設定します。 必要に応じて、入力の と EntryTypeinstance設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージにnull置換文字列の書式設定プレースホルダーが含まれていない場合は に設定valuesします。

イベントの追加の詳細を指定する必要がある場合は、イベントでバイナリ データを指定します。 たとえば、 パラメーターを data 使用して、特定のエラーに関する情報を含めます。 イベント ビューアーは、関連付けられたイベント データを解釈しません。データは、16 進数とテキストの組み合わせ形式で表示されます。 イベント固有のデータは控えめに使用してください。それが役に立つと確信している場合にのみ含めます。 また、イベント固有のデータを使用して、アプリケーションがイベント ビューアーとは別に処理できる情報を格納することもできます。 たとえば、イベント専用のビューアーを作成したり、イベント ログをスキャンしてイベント固有のデータからの情報を含むレポートを作成するプログラムを作成したりできます。

を使用WriteEventする前に、Sourceコンポーネントの前に プロパティをEventLog設定する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。

最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されたイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新せず、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

注意

を呼び出すWriteEvent前に インスタンスに をEventLog指定MachineNameしない場合は、ローカル コンピューター (".") が想定されます。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を記述するように構成する必要があります。 アプリケーションがイベント ログに WriteEntry 文字列値を直接書き込む場合は、 メソッドを使用します。

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

注意

リモート コンピューターにエントリを書き込む場合、リモート コンピューターが.NET Frameworkを実行していない場合、文字列の値messageが予期した値ではない可能性があります。 また、イベント ビューアーでは message 挿入文字列として扱われるため、文字列に %n を含めることはできません。 n は整数値 (%1 など) です。 インターネット プロトコルバージョン 6 (IPv6) アドレスにはこの文字シーケンスを含めることができるため、IPv6 アドレスを含むイベント メッセージをログに記録することはできません。

こちらもご覧ください

適用対象

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

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

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

public:
 static void WriteEvent(System::String ^ source, System::Diagnostics::EventInstance ^ instance, cli::array <System::Byte> ^ data, ... cli::array <System::Object ^> ^ values);
public static void WriteEvent (string source, System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
static member WriteEvent : string * System.Diagnostics.EventInstance * byte[] * obj[] -> unit
Public Shared Sub WriteEvent (source As String, instance As EventInstance, data As Byte(), ParamArray values As Object())

パラメーター

source
String

指定したコンピューター上のアプリケーションに登録されるイベント ソースの名前。

instance
EventInstance

ローカライズされたイベント ログ エントリを表す EventInstance インスタンス。

data
Byte[]

エントリに関連付けられているバイナリ データを保持するバイト配列。

values
Object[]

イベント ログ エントリのメッセージ テキストにマージする文字列の配列。

例外

source 値が空の文字列 ("") です。

- または -

source 値は null です。

- または -

instance.InstanceId が 0 より小さいか 、UInt16.MaxValue より大きい。

- または -

values には 256 を超える要素が格納されています。

- または -

values 要素の 1 つが 32766 バイトを超えています。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

instancenullです。

イベント ログのレジストリ キーを開けませんでした。

イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 Windows のエラー コードは使用できません。

次の例では、情報イベント エントリと警告イベント エントリを既存のイベント ログに書き込みます。 イベント メッセージ テキストは、リソース ファイル内のリソース識別子を使用して指定されます。 この例では、対応するリソース ファイルがソースに登録されていることを前提としています。

String^ sourceName = "SampleApplicationSource";
if ( EventLog::SourceExists( sourceName ) )
{
   
   // Define an informational event and a warning event.
   // The message identifiers correspond to the message text in the
   // message resource file defined for the source.
   EventInstance ^ myInfoEvent = gcnew EventInstance( InformationMsgId,0,EventLogEntryType::Information );
   EventInstance ^ myWarningEvent = gcnew EventInstance( WarningMsgId,0,EventLogEntryType::Warning );
   
   // Insert the method name into the event log message.
   array<String^>^insertStrings = {"EventLogSamples.WriteEventSample2"};
   
   // Write the events to the event log.
   EventLog::WriteEvent( sourceName, myInfoEvent, 0 );
   
   // Append binary data to the warning event entry.
   array<Byte>^binaryData = {7,8,9,10};
   EventLog::WriteEvent( sourceName, myWarningEvent, binaryData, insertStrings );
}
else
{
   Console::WriteLine( "Warning - event source {0} not registered", sourceName );
}

string sourceName = "SampleApplicationSource";
if(EventLog.SourceExists(sourceName))
{

    // Define an informational event and a warning event.

    // The message identifiers correspond to the message text in the
    // message resource file defined for the source.
    EventInstance myInfoEvent = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information);
    EventInstance myWarningEvent = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning);

    // Insert the method name into the event log message.
    string [] insertStrings = {"EventLogSamples.WriteEventSample2"};

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

    // Append binary data to the warning event entry.
    byte [] binaryData = { 7, 8, 9, 10 };
    EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings);
}
else
{
    Console.WriteLine("Warning - event source {0} not registered",
        sourceName);
}
           Dim sourceName As String = "SampleApplicationSource"
           If EventLog.SourceExists(sourceName)
  
               ' Define an informational event and a warning event.

               ' The message identifiers correspond to the message text in the
               ' message resource file defined for the source.
               Dim myInfoEvent As EventInstance = new EventInstance(InformationMsgId, 0, EventLogEntryType.Information)
               Dim myWarningEvent As EventInstance = new EventInstance(WarningMsgId, 0, EventLogEntryType.Warning)

               ' Insert the method name into the event log message.
               Dim insertStrings() As String = {"EventLogSamples.WriteEventSample2"}
           
               ' Write the events to the event log.

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

               ' Append binary data to the warning event entry.
               Dim binaryData() As Byte = { 7, 8, 9, 10 }
               EventLog.WriteEvent(sourceName, myWarningEvent, binaryData, insertStrings)
           Else 
               Console.WriteLine("Warning - event source {0} not registered", _
                   sourceName)
           End If

この例では、リソース ライブラリ EventLogMsgs.dll に組み込まれている次のメッセージ テキスト ファイルを使用します。 メッセージ テキスト ファイルは、メッセージ リソース ファイルの作成元のソースです。 メッセージ テキスト ファイルは、カテゴリ、イベント メッセージ、およびパラメーター挿入文字列のリソース識別子とテキストを定義します。

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

注釈

適切なログのイベント ソースとして既に登録されているソースを使用して、イベント ログに追加のイベント固有のデータを含むローカライズされたエントリを書き込むには、このメソッドを使用します。 イベント プロパティは、文字列値ではなくリソース識別子で指定します。 イベント ビューアーでは、リソース識別子を使用して、ソースのローカライズされたリソース ファイルの対応する文字列が表示されます。 リソース識別子を使用してイベントを書き込む前に、ソースを対応するリソース ファイルに登録する必要があります。

入力 instance インスタンスは、イベント メッセージとプロパティを指定します。 InstanceIdソース メッセージ リソース ファイル内instanceの定義されたメッセージの入力の を設定します。 必要に応じて、入力の と EntryTypeinstance設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージにnull置換文字列の書式設定プレースホルダーが含まれていない場合は に設定valuesします。

イベントの追加の詳細を指定する必要がある場合は、イベントでバイナリ データを指定します。 たとえば、 パラメーターを data 使用して、特定のエラーに関する情報を含めます。 イベント ビューアーは、関連付けられたイベント データを解釈しません。データは、16 進数とテキストの組み合わせ形式で表示されます。 イベント固有のデータは控えめに使用してください。それが役に立つと確信している場合にのみ含めます。 また、イベント固有のデータを使用して、アプリケーションがイベント ビューアーとは別に処理できる情報を格納することもできます。 たとえば、イベント専用のビューアーを作成したり、イベント ログをスキャンしてイベント固有のデータからの情報を含むレポートを作成するプログラムを作成したりできます。

を使用 WriteEventする前に、指定したソースをイベント ログに登録する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。

最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されたイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新せず、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を記述するように構成する必要があります。 アプリケーションがイベント ログに WriteEntry 文字列値を直接書き込む場合は、 メソッドを使用します。

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

こちらもご覧ください

適用対象