EventLog.WriteEvent メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ローカライズされたイベント エントリをイベント ログに書き込みます。
オーバーロード
WriteEvent(String, EventInstance, Object[]) |
指定した登録イベント ソースを使用して、指定したイベント データとメッセージ置換文字列と共にイベント ログ エントリを書き込みます。 |
WriteEvent(EventInstance, Object[]) |
ローカライズされたエントリをイベント ログに書き込みます。 |
WriteEvent(EventInstance, Byte[], Object[]) |
指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。 |
WriteEvent(String, EventInstance, Byte[], Object[]) |
指定した登録イベント ソースを使用して、指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。 |
WriteEvent(String, EventInstance, Object[])
指定した登録イベント ソースを使用して、指定したイベント データとメッセージ置換文字列と共にイベント ログ エントリを書き込みます。
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 文字を超えるレジストリ キーのパスになります。
instance
が null
です。
イベント ログのレジストリ キーを開けませんでした。
イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 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
の定義されたメッセージの入力の を設定します。 必要に応じて、入力の と EntryType をinstance
設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージにnull
置換文字列の書式設定プレースホルダーが含まれていない場合は に設定values
します。
を使用 WriteEventする前に、指定したソースをイベント ログに登録する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。
最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースを作成します。 これにより、オペレーティング システムが登録されたイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新せず、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。
ソースは、ローカライズされたエントリを書き込むか、直接文字列を記述するように構成する必要があります。 アプリケーションがイベント ログに WriteEntry 文字列値を直接書き込む場合は、 メソッドを使用します。
アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルを含まない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。
こちらもご覧ください
適用対象
WriteEvent(EventInstance, Object[])
ローカライズされたエントリをイベント ログに書き込みます。
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[]
イベント ログ エントリのメッセージ テキストにマージする文字列の配列。
- 属性
例外
Source の EventLog プロパティが設定されていません。
- または -
メソッドが新しいイベント ソースを登録しようとしましたが、MachineName のコンピューター名が無効です。
- または -
ソースは既に別のイベント ログに登録されています。
- または -
instance.InstanceId
が 0 より小さいか 、UInt16.MaxValue より大きい。
- または -
values
には 256 を超える要素が格納されています。
- または -
values
要素の 1 つが 32766 バイトを超えています。
- または -
ソース名は、254 文字を超えるレジストリ キーのパスになります。
instance
が null
です。
イベント ログのレジストリ キーを開けませんでした。
イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 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
の定義されたメッセージの入力の を設定します。 必要に応じて、入力の と EntryType をinstance
設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージにnull
置換文字列の書式設定プレースホルダーが含まれていない場合は に設定values
します。
を使用WriteEventする前に、Sourceコンポーネントの プロパティをEventLog設定する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。
最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースを作成します。 これにより、オペレーティング システムが登録されたイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新せず、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。
ソースは、ローカライズされたエントリを書き込むか、直接文字列を書き込む目的で構成する必要があります。 アプリケーションが WriteEntry 文字列値をイベント ログに直接書き込む場合は、 メソッドを使用します。
アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルのない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。
注意
リモート コンピューターにエントリを書き込む場合、リモート コンピューターが.NET Frameworkを実行していない場合、文字列の値message
が予期した値にならない可能性があります。 また、イベント ビューアーでは message
挿入文字列として扱われるため、文字列に %n を含めることはできません。 n は整数値 (%1 など) です。 インターネット プロトコルバージョン 6 (IPv6) アドレスにはこの文字シーケンスを含めることができるため、IPv6 アドレスを含むイベント メッセージをログに記録することはできません。
こちらもご覧ください
適用対象
WriteEvent(EventInstance, Byte[], Object[])
指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。
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[]
イベント ログ エントリのメッセージ テキストにマージする文字列の配列。
- 属性
例外
Source の EventLog プロパティが設定されていません。
- または -
メソッドが新しいイベント ソースを登録しようとしましたが、MachineName のコンピューター名が無効です。
- または -
ソースは既に別のイベント ログに登録されています。
- または -
instance.InstanceId
が 0 より小さいか 、UInt16.MaxValue より大きい。
- または -
values
には 256 を超える要素が格納されています。
- または -
values
要素の 1 つが 32766 バイトを超えています。
- または -
ソース名は、254 文字を超えるレジストリ キーのパスになります。
instance
が null
です。
イベント ログのレジストリ キーを開けませんでした。
イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 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
ソース メッセージ リソース ファイルで定義されているメッセージの入力の を設定します。 必要に応じて、入力の と EntryType をinstance
設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージに置換文字列の書式設定プレースホルダーが含まれていない場合は、 を にnull
設定values
します。
イベントの追加の詳細を指定する必要がある場合は、イベントでバイナリ データを指定します。 たとえば、 パラメーターを data
使用して、特定のエラーに関する情報を含めます。 イベント ビューアーは、関連付けられたイベント データを解釈しません。データは、16 進数とテキストの組み合わせ形式で表示されます。 イベント固有のデータを慎重に使用する。それが役に立つと確信している場合にのみ含めます。 また、イベント固有のデータを使用して、アプリケーションがイベント ビューアーとは別に処理できる情報を格納することもできます。 たとえば、イベント専用のビューアーを作成したり、イベント ログをスキャンしてイベント固有のデータからの情報を含むレポートを作成するプログラムを作成したりできます。
を使用する前に、 Source コンポーネントの前に コンポーネントの EventLog プロパティを WriteEvent設定する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。
最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースを作成します。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを 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[])
指定した登録イベント ソースを使用して、指定したイベント データ、メッセージ置換文字列、および関連するバイナリ データと共にイベント ログ エントリを書き込みます。
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 文字を超えるレジストリ キーのパスになります。
instance
が null
です。
イベント ログのレジストリ キーを開けませんでした。
イベント エントリをイベント ログに書き込むときにオペレーティング システムからエラーが報告されました。 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
ソース メッセージ リソース ファイルで定義されているメッセージの入力の を設定します。 必要に応じて、入力の と EntryType をinstance
設定CategoryIdして、イベント エントリのカテゴリとイベントの種類を定義できます。 ローカライズされたメッセージ テキストに挿入する言語に依存しない文字列の配列を指定することもできます。 イベント メッセージに置換文字列の書式設定プレースホルダーが含まれていない場合は、 を にnull
設定values
します。
イベントの追加の詳細を指定する必要がある場合は、イベントでバイナリ データを指定します。 たとえば、 パラメーターを data
使用して、特定のエラーに関する情報を含めます。 イベント ビューアーは、関連付けられたイベント データを解釈しません。データは、16 進数とテキストの組み合わせ形式で表示されます。 イベント固有のデータを慎重に使用する。それが役に立つと確信している場合にのみ含めます。 また、イベント固有のデータを使用して、アプリケーションがイベント ビューアーとは別に処理できる情報を格納することもできます。 たとえば、イベント専用のビューアーを作成したり、イベント ログをスキャンしてイベント固有のデータからの情報を含むレポートを作成するプログラムを作成したりできます。
を使用 WriteEventする前に、指定したソースをイベント ログに登録する必要があります。 ローカライズされたエントリをログに書き込むには、指定されたソースを構成する必要があります。ソースには、少なくともメッセージ リソース ファイルが定義されている必要があります。
最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。 アプリケーションのインストール中に新しいイベント ソースを作成します。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。
ソースは、ローカライズされたエントリを書き込むか、直接文字列を書き込む目的で構成する必要があります。 アプリケーションが WriteEntry 文字列値をイベント ログに直接書き込む場合は、 メソッドを使用します。
アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルのない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。
こちらもご覧ください
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示