EventLog.WriteEvent Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapisuje zlokalizowany wpis zdarzenia w dzienniku zdarzeń.
Przeciążenia
WriteEvent(String, EventInstance, Object[]) |
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia i ciągami zastępczymi komunikatów przy użyciu określonego zarejestrowanego źródła zdarzeń. |
WriteEvent(EventInstance, Object[]) |
Zapisuje zlokalizowany wpis w dzienniku zdarzeń. |
WriteEvent(EventInstance, Byte[], Object[]) |
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia, ciągami zastępczymi komunikatów i skojarzonymi danymi binarnymi. |
WriteEvent(String, EventInstance, Byte[], Object[]) |
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia, ciągami zastępczymi komunikatów i skojarzonymi danymi binarnymi oraz przy użyciu określonego zarejestrowanego źródła zdarzeń. |
WriteEvent(String, EventInstance, Object[])
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia i ciągami zastępczymi komunikatów przy użyciu określonego zarejestrowanego źródła zdarzeń.
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())
Parametry
- source
- String
Nazwa źródła zdarzeń zarejestrowanego dla aplikacji na określonym komputerze.
- instance
- EventInstance
EventInstance Wystąpienie reprezentujące zlokalizowany wpis dziennika zdarzeń.
- values
- Object[]
Tablica ciągów do scalenia z tekstem komunikatu wpisu dziennika zdarzeń.
Wyjątki
Wartość source
jest pustym ciągiem ("").
-lub-
Wartość elementu source
to null
.
-lub-
instance.InstanceId
wartość jest mniejsza niż zero lub większa niż UInt16.MaxValue.
-lub-
values
ma ponad 256 elementów.
-lub-
values
Jeden z elementów jest dłuższy niż 32766 bajtów.
-lub-
Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.
instance
to null
.
Nie można otworzyć klucza rejestru dla dziennika zdarzeń.
System operacyjny zgłosił błąd podczas zapisywania wpisu zdarzenia w dzienniku zdarzeń. Kod błędu systemu Windows jest niedostępny.
Przykłady
Poniższy przykład zapisuje wpis zdarzenia informacyjnego i wpis zdarzenia ostrzegawczego do istniejącego dziennika zdarzeń. Tekst komunikatu o zdarzeniu jest określony przy użyciu identyfikatora zasobu w pliku zasobu. W przykładzie przyjęto założenie, że odpowiedni plik zasobu został zarejestrowany dla źródła.
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
W przykładzie użyto następującego pliku tekstowego wiadomości wbudowanego w bibliotekę zasobów EventLogMsgs.dll. Plik tekstowy wiadomości to źródło, z którego jest tworzony plik zasobu wiadomości. Plik tekstowy wiadomości definiuje identyfikatory zasobów i tekst dla kategorii, komunikatu o zdarzeniach i ciągów wstawiania parametrów.
; // 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
.
Uwagi
Ta metoda służy do zapisywania zlokalizowanego wpisu w dzienniku zdarzeń przy użyciu źródła, które zostało już zarejestrowane jako źródło zdarzeń dla odpowiedniego dziennika. Właściwości zdarzenia należy określić przy użyciu identyfikatorów zasobów, a nie wartości ciągów. Podgląd zdarzeń używa identyfikatorów zasobów do wyświetlania odpowiednich ciągów z zlokalizowanego pliku zasobu dla źródła. Przed zapisem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobu.
Wystąpienie wejściowe instance
określa komunikat i właściwości zdarzenia. InstanceIdinstance
Ustaw dane wejściowe dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie możesz ustawić CategoryId wartość i EntryType danych wejściowych instance
, aby zdefiniować kategorię i typ zdarzenia wpisu zdarzenia. Można również określić tablicę ciągów niezależnych od języka, aby wstawić do zlokalizowanego tekstu wiadomości. Ustaw wartość values
, null
jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania dla ciągów zastępczych.
Przed użyciem polecenia WriteEventnależy zarejestrować określone źródło dla dziennika zdarzeń. Określone źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów w dzienniku; źródło musi mieć co najmniej zdefiniowany plik zasobu komunikatu.
Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem. Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.
Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. WriteEntry Użyj metody , jeśli aplikacja zapisuje wartości ciągów bezpośrednio w dzienniku zdarzeń.
Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.
Zobacz też
Dotyczy
WriteEvent(EventInstance, Object[])
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
Zapisuje zlokalizowany wpis w dzienniku zdarzeń.
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())
Parametry
- instance
- EventInstance
EventInstance Wystąpienie reprezentujące zlokalizowany wpis dziennika zdarzeń.
- values
- Object[]
Tablica ciągów do scalenia z tekstem komunikatu wpisu dziennika zdarzeń.
- Atrybuty
Wyjątki
Właściwość Source elementu EventLog nie została ustawiona.
-lub-
Metoda próbowała zarejestrować nowe źródło zdarzeń, ale nazwa komputera w MachineName pliku jest nieprawidłowa.
-lub-
Źródło jest już zarejestrowane dla innego dziennika zdarzeń.
-lub-
instance.InstanceId
wartość jest mniejsza niż zero lub większa niż UInt16.MaxValue.
-lub-
values
ma ponad 256 elementów.
-lub-
values
Jeden z elementów jest dłuższy niż 32766 bajtów.
-lub-
Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.
instance
to null
.
Nie można otworzyć klucza rejestru dla dziennika zdarzeń.
System operacyjny zgłosił błąd podczas zapisywania wpisu zdarzenia w dzienniku zdarzeń. Kod błędu systemu Windows jest niedostępny.
Przykłady
Poniższy przykład zapisuje dwa wpisy inspekcji w dzienniku myNewLog
zdarzeń . Przykład tworzy nowe źródło zdarzeń i nowy dziennik zdarzeń, jeśli nie istnieją na komputerze lokalnym. Tekst komunikatu o zdarzeniu jest określony przy użyciu identyfikatora zasobu w pliku zasobu.
// 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)
W przykładzie użyto następującego pliku tekstowego wiadomości wbudowanego w bibliotekę zasobów EventLogMsgs.dll. Plik tekstowy wiadomości to źródło, z którego jest tworzony plik zasobu wiadomości. Plik tekstowy wiadomości definiuje identyfikatory zasobów i tekst dla kategorii, komunikatu o zdarzeniach i ciągów wstawiania parametrów.
; // 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
.
Uwagi
Użyj tej metody, aby zapisać zlokalizowany wpis w dzienniku zdarzeń. Właściwości zdarzenia należy określić przy użyciu identyfikatorów zasobów, a nie wartości ciągów. Podgląd zdarzeń używa identyfikatorów zasobów do wyświetlania odpowiednich ciągów z zlokalizowanego pliku zasobów dla elementu Source. Przed zapisem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobu.
Wystąpienie wejściowe instance
określa komunikat i właściwości zdarzenia. InstanceIdinstance
Ustaw dane wejściowe dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie możesz ustawić CategoryId wartość i EntryType danych wejściowych instance
, aby zdefiniować kategorię i typ zdarzenia wpisu zdarzenia. Można również określić tablicę ciągów niezależnych od języka, aby wstawić do zlokalizowanego tekstu wiadomości. Ustaw wartość values
, null
jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania dla ciągów zastępczych.
Przed użyciem polecenia należy ustawić Source właściwość składnika EventLog .WriteEvent Określone źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów w dzienniku; źródło musi mieć co najmniej zdefiniowany plik zasobu komunikatu.
Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem. Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.
Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. WriteEntry Użyj metody , jeśli aplikacja zapisuje wartości ciągów bezpośrednio w dzienniku zdarzeń.
Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.
Uwaga
Jeśli napiszesz wpis na komputerze zdalnym, wartość message
ciągu może nie być oczekiwana, jeśli komputer zdalny nie jest uruchomiony .NET Framework. message
Ponadto ciąg nie może zawierać %n, gdzie n jest wartością całkowitą (na przykład %1), ponieważ przeglądarka zdarzeń traktuje go jako ciąg wstawiania. Ponieważ adres protokołu internetowego w wersji 6 (IPv6) może zawierać tę sekwencję znaków, nie można zarejestrować komunikatu o zdarzeniu zawierającego adres IPv6.
Zobacz też
Dotyczy
WriteEvent(EventInstance, Byte[], Object[])
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia, ciągami zastępczymi komunikatów i skojarzonymi danymi binarnymi.
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())
Parametry
- instance
- EventInstance
EventInstance Wystąpienie reprezentujące zlokalizowany wpis dziennika zdarzeń.
- data
- Byte[]
Tablica bajtów zawierająca dane binarne skojarzone z wpisem.
- values
- Object[]
Tablica ciągów do scalenia z tekstem komunikatu wpisu dziennika zdarzeń.
- Atrybuty
Wyjątki
Właściwość Source elementu EventLog nie została ustawiona.
-lub-
Metoda próbowała zarejestrować nowe źródło zdarzeń, ale nazwa komputera w MachineName pliku jest nieprawidłowa.
-lub-
Źródło jest już zarejestrowane dla innego dziennika zdarzeń.
-lub-
instance.InstanceId
wartość jest mniejsza niż zero lub większa niż UInt16.MaxValue.
-lub-
values
ma ponad 256 elementów.
-lub-
values
Jeden z elementów jest dłuższy niż 32766 bajtów.
-lub-
Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.
instance
to null
.
Nie można otworzyć klucza rejestru dla dziennika zdarzeń.
System operacyjny zgłosił błąd podczas zapisywania wpisu zdarzenia w dzienniku zdarzeń. Kod błędu systemu Windows jest niedostępny.
Przykłady
Poniższy przykład zapisuje dwa wpisy inspekcji w dzienniku myNewLog
zdarzeń . Przykład tworzy nowe źródło zdarzeń i nowy dziennik zdarzeń, jeśli nie istnieją na komputerze lokalnym. Tekst komunikatu o zdarzeniu jest określony przy użyciu identyfikatora zasobu w pliku zasobu.
// 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)
W przykładzie użyto następującego pliku tekstowego wiadomości wbudowanego w bibliotekę zasobów EventLogMsgs.dll. Plik tekstowy wiadomości to źródło, z którego jest tworzony plik zasobu wiadomości. Plik tekstowy wiadomości definiuje identyfikatory zasobów i tekst dla kategorii, komunikatu o zdarzeniach i ciągów wstawiania parametrów.
; // 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
.
Uwagi
Ta metoda służy do zapisywania zlokalizowanego wpisu z dodatkowymi danymi specyficznymi dla zdarzeń w dzienniku zdarzeń. Właściwości zdarzenia należy określić przy użyciu identyfikatorów zasobów, a nie wartości ciągów. Podgląd zdarzeń używa identyfikatorów zasobów do wyświetlania odpowiednich ciągów z zlokalizowanego pliku zasobów dla elementu Source. Przed zapisem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobu.
Wystąpienie wejściowe instance
określa komunikat i właściwości zdarzenia. InstanceIdinstance
Ustaw dane wejściowe dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie możesz ustawić CategoryId wartość i EntryType danych wejściowych instance
, aby zdefiniować kategorię i typ zdarzenia wpisu zdarzenia. Można również określić tablicę ciągów niezależnych od języka, aby wstawić do zlokalizowanego tekstu wiadomości. Ustaw wartość values
, null
jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania dla ciągów zastępczych.
Określ dane binarne z zdarzeniem, gdy konieczne jest podanie dodatkowych szczegółów zdarzenia. Na przykład użyj parametru data
, aby uwzględnić informacje o określonym błędzie. Podgląd zdarzeń nie interpretuje skojarzonych danych zdarzenia; wyświetla dane w połączonym formacie szesnastkowym i tekstowym. Używaj danych specyficznych dla zdarzeń oszczędnie; uwzględnij go tylko wtedy, gdy masz pewność, że będzie to przydatne. Możesz również użyć danych specyficznych dla zdarzeń do przechowywania informacji, które aplikacja może przetwarzać niezależnie od Podgląd zdarzeń. Można na przykład napisać przeglądarkę specjalnie dla zdarzeń lub napisać program, który skanuje dziennik zdarzeń i tworzy raporty zawierające informacje z danych specyficznych dla zdarzenia.
Przed użyciem elementu należy ustawić Source właściwość składnika EventLog przed użyciem elementu WriteEvent. Określone źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów w dzienniku; źródło musi mieć co najmniej zdefiniowany plik zasobu komunikatu.
Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem. Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.
Uwaga
Jeśli nie określisz MachineName wystąpienia EventLog przed wywołaniem WriteEventpolecenia , zakłada się, że zostanie przyjęty komputer lokalny (".").
Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. WriteEntry Użyj metody , jeśli aplikacja zapisuje wartości ciągów bezpośrednio w dzienniku zdarzeń.
Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.
Uwaga
Jeśli napiszesz wpis na komputerze zdalnym, wartość message
ciągu może nie być oczekiwana, jeśli komputer zdalny nie jest uruchomiony .NET Framework. message
Ponadto ciąg nie może zawierać %n, gdzie n jest wartością całkowitą (na przykład %1), ponieważ przeglądarka zdarzeń traktuje go jako ciąg wstawiania. Ponieważ adres protokołu internetowego w wersji 6 (IPv6) może zawierać tę sekwencję znaków, nie można zarejestrować komunikatu o zdarzeniu zawierającego adres IPv6.
Zobacz też
Dotyczy
WriteEvent(String, EventInstance, Byte[], Object[])
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
- Źródło:
- EventLog.cs
Zapisuje wpis dziennika zdarzeń z podanymi danymi zdarzenia, ciągami zastępczymi komunikatów i skojarzonymi danymi binarnymi oraz przy użyciu określonego zarejestrowanego źródła zdarzeń.
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())
Parametry
- source
- String
Nazwa źródła zdarzeń zarejestrowanego dla aplikacji na określonym komputerze.
- instance
- EventInstance
EventInstance Wystąpienie reprezentujące zlokalizowany wpis dziennika zdarzeń.
- data
- Byte[]
Tablica bajtów zawierająca dane binarne skojarzone z wpisem.
- values
- Object[]
Tablica ciągów do scalenia z tekstem komunikatu wpisu dziennika zdarzeń.
Wyjątki
Wartość source
jest pustym ciągiem ("").
-lub-
Wartość elementu source
to null
.
-lub-
instance.InstanceId
wartość jest mniejsza niż zero lub większa niż UInt16.MaxValue.
-lub-
values
ma ponad 256 elementów.
-lub-
values
Jeden z elementów jest dłuższy niż 32766 bajtów.
-lub-
Nazwa źródła powoduje, że ścieżka klucza rejestru jest dłuższa niż 254 znaki.
instance
to null
.
Nie można otworzyć klucza rejestru dla dziennika zdarzeń.
System operacyjny zgłosił błąd podczas zapisywania wpisu zdarzenia w dzienniku zdarzeń. Kod błędu systemu Windows jest niedostępny.
Przykłady
Poniższy przykład zapisuje wpis zdarzenia informacyjnego i wpis zdarzenia ostrzegawczego do istniejącego dziennika zdarzeń. Tekst komunikatu o zdarzeniu jest określony przy użyciu identyfikatora zasobu w pliku zasobu. W przykładzie przyjęto założenie, że odpowiedni plik zasobu został zarejestrowany dla źródła.
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
W przykładzie użyto następującego pliku tekstowego wiadomości wbudowanego w bibliotekę zasobów EventLogMsgs.dll. Plik tekstowy wiadomości to źródło, z którego jest tworzony plik zasobu wiadomości. Plik tekstowy wiadomości definiuje identyfikatory zasobów i tekst dla kategorii, komunikatu o zdarzeniach i ciągów wstawiania parametrów.
; // 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
.
Uwagi
Ta metoda służy do zapisywania zlokalizowanego wpisu z dodatkowymi danymi specyficznymi dla zdarzenia w dzienniku zdarzeń przy użyciu źródła, które zostało już zarejestrowane jako źródło zdarzeń dla odpowiedniego dziennika. Właściwości zdarzenia należy określić przy użyciu identyfikatorów zasobów, a nie wartości ciągów. Podgląd zdarzeń używa identyfikatorów zasobów do wyświetlania odpowiednich ciągów z zlokalizowanego pliku zasobu dla źródła. Przed zapisem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobu.
Wystąpienie wejściowe instance
określa komunikat i właściwości zdarzenia. InstanceIdinstance
Ustaw dane wejściowe dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie możesz ustawić CategoryId wartość i EntryType danych wejściowych instance
, aby zdefiniować kategorię i typ zdarzenia wpisu zdarzenia. Można również określić tablicę ciągów niezależnych od języka, aby wstawić do zlokalizowanego tekstu wiadomości. Ustaw wartość values
, null
jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania dla ciągów zastępczych.
Określ dane binarne z zdarzeniem, gdy konieczne jest podanie dodatkowych szczegółów zdarzenia. Na przykład użyj parametru data
, aby uwzględnić informacje o określonym błędzie. Podgląd zdarzeń nie interpretuje skojarzonych danych zdarzenia; wyświetla dane w połączonym formacie szesnastkowym i tekstowym. Używaj danych specyficznych dla zdarzeń oszczędnie; uwzględnij go tylko wtedy, gdy masz pewność, że będzie to przydatne. Możesz również użyć danych specyficznych dla zdarzeń do przechowywania informacji, które aplikacja może przetwarzać niezależnie od Podgląd zdarzeń. Można na przykład napisać przeglądarkę specjalnie dla zdarzeń lub napisać program, który skanuje dziennik zdarzeń i tworzy raporty zawierające informacje z danych specyficznych dla zdarzenia.
Przed użyciem polecenia WriteEventnależy zarejestrować określone źródło dla dziennika zdarzeń. Określone źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów w dzienniku; źródło musi mieć co najmniej zdefiniowany plik zasobu komunikatu.
Należy utworzyć i skonfigurować źródło zdarzeń przed zapisaniem pierwszego wpisu ze źródłem. Twórca nowe źródło zdarzeń podczas instalacji aplikacji. Dzięki temu system operacyjny może odświeżyć listę zarejestrowanych źródeł zdarzeń i ich konfigurację. Jeśli system operacyjny nie odświeżył listy źródeł zdarzeń i spróbujesz napisać zdarzenie przy użyciu nowego źródła, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub metody CreateEventSource . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.
Źródło musi być skonfigurowane do zapisywania zlokalizowanych wpisów lub zapisywania ciągów bezpośrednich. WriteEntry Użyj metody , jeśli aplikacja zapisuje wartości ciągów bezpośrednio w dzienniku zdarzeń.
Jeśli aplikacja zapisuje wpisy przy użyciu zarówno identyfikatorów zasobów, jak i wartości ciągów, musisz zarejestrować dwa oddzielne źródła. Na przykład skonfiguruj jedno źródło z plikami zasobów, a następnie użyj tego źródła w WriteEvent metodzie do zapisu wpisów przy użyciu identyfikatorów zasobów w dzienniku zdarzeń. Następnie utwórz inne źródło bez plików zasobów i użyj tego źródła w metodzie , aby zapisywać ciągi bezpośrednio w WriteEntry dzienniku zdarzeń przy użyciu tego źródła.