EventLog.WriteEvent Metoda

Definicja

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

Wystąpienie EventInstance 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 więcej niż 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 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ślany 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 komunikatu 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 zdarzenia 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 już zarejestrowanego jako źródło zdarzeń dla odpowiedniego dziennika. Należy określić właściwości zdarzenia z identyfikatorami zasobów, a nie wartościami 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 źródła. Przed zapisaniem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobów.

Wystąpienie wejściowe instance określa komunikat zdarzenia i właściwości. InstanceId Ustaw wartość instance danych wejściowych dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie można ustawić wartości CategoryId 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 do wstawienia do zlokalizowanego tekstu wiadomości. Ustaw values wartość na null , jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania 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.

Przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń. Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub CreateEventSource metody . 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 identyfikatorów zasobów 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 , aby zapisać wpisy 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 WriteEntry , aby zapisywać ciągi bezpośrednio w 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

Wystąpienie EventInstance 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 obiektu 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 więcej niż 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 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 myNewLogzdarzeń . 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ślany 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 komunikatu 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 zdarzenia 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ń. Należy określić właściwości zdarzenia z identyfikatorami zasobów, a nie wartościami 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 zapisaniem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobów.

Wystąpienie wejściowe instance określa komunikat zdarzenia i właściwości. InstanceId Ustaw wartość instance danych wejściowych dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie można ustawić wartości CategoryId 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 do wstawienia do zlokalizowanego tekstu wiadomości. Ustaw values wartość na null , jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania ciągów zastępczych.

Przed użyciem Source elementu WriteEventnależy ustawić właściwość w EventLog składniku . 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.

Przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń. Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub CreateEventSource metody . 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 identyfikatorów zasobów 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 , aby zapisać wpisy 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 WriteEntry , aby zapisywać ciągi bezpośrednio w 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ż podgląd 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

Wystąpienie EventInstance 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 obiektu 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 więcej niż 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 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 myNewLogzdarzeń . 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ślany 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 komunikatu 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 zdarzenia 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ń. Należy określić właściwości zdarzenia z identyfikatorami zasobów, a nie wartościami 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 zapisaniem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobów.

Wystąpienie wejściowe instance określa komunikat zdarzenia i właściwości. InstanceId Ustaw wartość instance danych wejściowych dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie można ustawić wartości CategoryId 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 do wstawienia do zlokalizowanego tekstu wiadomości. Ustaw values wartość na null , jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania ciągów zastępczych.

Określ dane binarne ze zdarzeniem, gdy jest to konieczne, aby podać dodatkowe szczegóły 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. Rzadko używaj danych specyficznych dla zdarzenia; uwzględnij je 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 Source elementu należy ustawić 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.

Przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń. Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub CreateEventSource metody . Aby utworzyć nowe źródło zdarzeń, musisz mieć uprawnienia administracyjne na komputerze.

Uwaga

Jeśli nie określisz MachineName elementu dla EventLog wystąpienia przed wywołaniem WriteEventmetody , 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 identyfikatorów zasobów 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 , aby zapisać wpisy 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 WriteEntry , aby zapisywać ciągi bezpośrednio w 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ż podgląd 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

Wystąpienie EventInstance 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 więcej niż 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 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ślany 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 komunikatu 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 zdarzenia 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ń przy użyciu źródła już zarejestrowanego jako źródło zdarzeń dla odpowiedniego dziennika. Należy określić właściwości zdarzenia z identyfikatorami zasobów, a nie wartościami 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 źródła. Przed zapisaniem zdarzeń przy użyciu identyfikatorów zasobów należy zarejestrować źródło w odpowiednim pliku zasobów.

Wystąpienie wejściowe instance określa komunikat zdarzenia i właściwości. InstanceId Ustaw wartość instance danych wejściowych dla zdefiniowanego komunikatu w pliku zasobu komunikatu źródłowego. Opcjonalnie można ustawić wartości CategoryId 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 do wstawienia do zlokalizowanego tekstu wiadomości. Ustaw values wartość na null , jeśli komunikat o zdarzeniu nie zawiera symboli zastępczych formatowania ciągów zastępczych.

Określ dane binarne ze zdarzeniem, gdy jest to konieczne, aby podać dodatkowe szczegóły 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. Rzadko używaj danych specyficznych dla zdarzenia; uwzględnij je 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.

Przed zapisaniem pierwszego wpisu ze źródłem należy utworzyć i skonfigurować źródło zdarzeń. Utwórz 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 zapisać zdarzenie z nowym źródłem, operacja zapisu zakończy się niepowodzeniem. Nowe źródło można skonfigurować przy użyciu metody EventLogInstallerlub CreateEventSource metody . 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 identyfikatorów zasobów 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 , aby zapisać wpisy 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 WriteEntry , aby zapisywać ciągi bezpośrednio w dzienniku zdarzeń przy użyciu tego źródła.

Zobacz też

Dotyczy