Поделиться через


EventLog.WriteEvent Метод

Определение

Вносит записи локализованных событий в журнал событий.

Перегрузки

WriteEvent(String, EventInstance, Object[])

Вносит в журнал событий запись с заданными данными сообщения и строками замещения сообщения, используя указанный зарегистрированный источник событий.

WriteEvent(EventInstance, Object[])

Вносит локализованные записи в журнал событий.

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

Заносит записи журнала событий с данными события, строками замещения сообщения и связанными двоичными данными.

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

Вносит в журнал событий запись с заданными данными сообщения, строками замещения сообщения и связанными двоичными данными, используя указанный зарегистрированный источник событий.

WriteEvent(String, EventInstance, Object[])

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Вносит в журнал событий запись с заданными данными сообщения и строками замещения сообщения, используя указанный зарегистрированный источник событий.

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

Параметры

source
String

Имя источника событий, зарегистрированного для приложения на заданном компьютере.

instance
EventInstance

Экземпляр EventInstance, который представляет локализованную запись журнала событий.

values
Object[]

Массив строк для слияния в текстовое сообщение записи журнала событий.

Исключения

Значением source является пустая строка ("").

-или-

Значение source равно null.

-или-

instance.InstanceId значение меньше нуля или больше UInt16.MaxValue.

-или-

values содержит более 256 элементов.

-или-

Один из элементов values длиннее 32766 байт.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

instance имеет значение null.

Не удается открыть раздел реестра для журнала событий.

Операционная система сообщила об ошибке при записи сведений о событии в журнал событий. Код ошибки Windows недоступен.

Примеры

В следующем примере записывается информационная запись события и запись предупреждения в существующий журнал событий. Текст сообщения о событии указывается с помощью идентификатора ресурса в файле ресурсов. В примере предполагается, что соответствующий файл ресурсов зарегистрирован для источника.

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

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

    // Define an informational event and a warning event.

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

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

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

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

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

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

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

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

В примере используется следующий текстовый файл сообщения, встроенный в библиотеку ресурсов EventLogMsgs.dll. Текстовый файл сообщения — это источник, из которого создается файл ресурсов сообщения. Текстовый файл сообщения определяет идентификаторы ресурсов и текст для категорий, сообщений о событии и строк вставки параметров.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Используйте этот метод для записи локализованной записи в журнал событий, используя источник, уже зарегистрированный в качестве источника событий для соответствующего журнала. Свойства события указываются с помощью идентификаторов ресурсов, а не строковых значений. Просмотр событий использует идентификаторы ресурсов для отображения соответствующих строк из локализованного файла ресурсов для источника. Перед записью событий с помощью идентификаторов ресурсов необходимо зарегистрировать источник в соответствующем файле ресурсов.

Входной instance экземпляр указывает сообщение о событии и свойства. InstanceIdinstance Задайте входные данные для определенного сообщения в файле ресурсов исходного сообщения. При необходимости можно задать CategoryId и EntryType входных данных, instance чтобы определить категорию и тип события записи события. Можно также указать массив строк, не зависящих от языка, для вставки в текст локализованного сообщения. Задайте значение values , null если сообщение о событии не содержит заполнители форматирования для заменяющих строк.

Указанный источник должен быть зарегистрирован для журнала событий перед использованием WriteEvent. Указанный источник должен быть настроен для записи локализованных записей в журнал; в источнике должен быть определен как минимум файл ресурсов сообщения.

Перед записью первой записи с помощью источника необходимо создать и настроить источник событий. Create новый источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Используйте метод , WriteEntry если приложение записывает строковые значения непосредственно в журнал событий.

Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

См. также раздел

Применяется к

WriteEvent(EventInstance, Object[])

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Вносит локализованные записи в журнал событий.

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

Параметры

instance
EventInstance

Экземпляр EventInstance, который представляет локализованную запись журнала событий.

values
Object[]

Массив строк для слияния в текстовое сообщение записи журнала событий.

Атрибуты

Исключения

Не задано свойство Source класса EventLog.

-или-

Метод пытается зарегистрировать новый источник событий, но имя компьютера в MachineName является недопустимым.

-или-

Источник уже зарегистрирован для различных журналов событий.

-или-

instance.InstanceId значение меньше нуля или больше UInt16.MaxValue.

-или-

values содержит более 256 элементов.

-или-

Один из элементов values длиннее 32766 байт.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

instance имеет значение null.

Не удается открыть раздел реестра для журнала событий.

Операционная система сообщила об ошибке при записи сведений о событии в журнал событий. Код ошибки Windows недоступен.

Примеры

В следующем примере две записи аудита записываются в журнал myNewLogсобытий . В примере создается новый источник событий и новый журнал событий, если они не существуют на локальном компьютере. Текст сообщения о событии указывается с помощью идентификатора ресурса в файле ресурсов.

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

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

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

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

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

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

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

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

    CreateEventSourceSample1(messageFile);
}

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

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

// Define two audit events.

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

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

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

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

           Dim sourceName As String = "SampleApplicationSource"

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

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

               CreateEventSourceSample1(messageFile)
           End If 

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

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

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

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

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

В примере используется следующий текстовый файл сообщения, встроенный в библиотеку ресурсов EventLogMsgs.dll. Текстовый файл сообщения — это источник, из которого создается файл ресурсов сообщения. Текстовый файл сообщения определяет идентификаторы ресурсов и текст для категорий, сообщений о событии и строк вставки параметров.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Используйте этот метод для записи локализованной записи в журнал событий. Свойства события указываются с помощью идентификаторов ресурсов, а не строковых значений. Просмотр событий использует идентификаторы ресурсов для отображения соответствующих строк из локализованного файла ресурсов для Source. Перед записью событий с помощью идентификаторов ресурсов необходимо зарегистрировать источник в соответствующем файле ресурсов.

Входной instance экземпляр указывает сообщение о событии и свойства. InstanceIdinstance Задайте входные данные для определенного сообщения в файле ресурсов исходного сообщения. При необходимости можно задать CategoryId и EntryType входных данных, instance чтобы определить категорию и тип события записи события. Можно также указать массив строк, не зависящих от языка, для вставки в текст локализованного сообщения. Задайте значение values , null если сообщение о событии не содержит заполнители форматирования для заменяющих строк.

Перед использованием WriteEventнеобходимо задать Source свойство для EventLog компонента . Указанный источник должен быть настроен для записи локализованных записей в журнал; в источнике должен быть определен как минимум файл ресурсов сообщения.

Перед записью первой записи с помощью источника необходимо создать и настроить источник событий. Create новый источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Используйте метод , WriteEntry если приложение записывает строковые значения непосредственно в журнал событий.

Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

Примечание

Если запись записывается на удаленный компьютер, значение message строки может не быть ожидаемым, если на удаленном компьютере не выполняется платформа .NET Framework. Кроме того, message строка не может содержать %n, где n — целочисленное значение (например, %1), так как средство просмотра событий рассматривает ее как строку вставки. Так как ip-адрес версии 6 (IPv6) может содержать эту последовательность символов, невозможно записать в журнал сообщение о событии, содержащее IPv6-адрес.

См. также раздел

Применяется к

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

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Заносит записи журнала событий с данными события, строками замещения сообщения и связанными двоичными данными.

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

Параметры

instance
EventInstance

Экземпляр EventInstance, который представляет локализованную запись журнала событий.

data
Byte[]

Массив байтов, в котором хранятся двоичные данные, связанные с записью.

values
Object[]

Массив строк для слияния в текстовое сообщение записи журнала событий.

Атрибуты

Исключения

Не задано свойство Source класса EventLog.

-или-

Метод пытается зарегистрировать новый источник событий, но имя компьютера в MachineName является недопустимым.

-или-

Источник уже зарегистрирован для различных журналов событий.

-или-

instance.InstanceId значение меньше нуля или больше UInt16.MaxValue.

-или-

values содержит более 256 элементов.

-или-

Один из элементов values длиннее 32766 байт.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

instance имеет значение null.

Не удается открыть раздел реестра для журнала событий.

Операционная система сообщила об ошибке при записи сведений о событии в журнал событий. Код ошибки Windows недоступен.

Примеры

В следующем примере две записи аудита записываются в журнал myNewLogсобытий . В примере создается новый источник событий и новый журнал событий, если они не существуют на локальном компьютере. Текст сообщения о событии указывается с помощью идентификатора ресурса в файле ресурсов.

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

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

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

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

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

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

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

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

    CreateEventSourceSample1(messageFile);
}

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

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

// Define two audit events.

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

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

// Write the events to the event log.

myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings);

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

           Dim sourceName As String = "SampleApplicationSource"

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

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

               CreateEventSourceSample1(messageFile)
           End If 

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

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

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

           myEventLog.WriteEvent(myAuditSuccessEvent, insertStrings)

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

В примере используется следующий текстовый файл сообщения, встроенный в библиотеку ресурсов EventLogMsgs.dll. Текстовый файл сообщения — это источник, из которого создается файл ресурсов сообщения. Текстовый файл сообщения определяет идентификаторы ресурсов и текст для категорий, сообщений о событии и строк вставки параметров.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Используйте этот метод для записи локализованной записи с дополнительными данными о событиях в журнал событий. Свойства события указываются с помощью идентификаторов ресурсов, а не строковых значений. Просмотр событий использует идентификаторы ресурсов для отображения соответствующих строк из локализованного файла ресурсов для Source. Перед записью событий с помощью идентификаторов ресурсов необходимо зарегистрировать источник в соответствующем файле ресурсов.

Входной instance экземпляр указывает сообщение о событии и свойства. InstanceIdinstance Задайте входные данные для определенного сообщения в файле ресурсов исходного сообщения. При необходимости можно задать CategoryId и EntryType входных данных, instance чтобы определить категорию и тип события записи события. Можно также указать массив строк, не зависящих от языка, для вставки в текст локализованного сообщения. Задайте значение values , null если сообщение о событии не содержит заполнители форматирования для заменяющих строк.

Укажите двоичные данные с событием, если необходимо предоставить дополнительные сведения о событии. Например, используйте параметр , data чтобы включить сведения о конкретной ошибке. Просмотр событий не интерпретирует связанные данные события, а отображает данные в комбинированном шестнадцатеричном и текстовом формате. Использовать данные, относящиеся к событиям, экономно; включать его только в том случае, если вы уверены, что это будет полезно. Вы также можете использовать данные, относящиеся к событиям, для хранения информации, которую приложение может обрабатывать независимо от Просмотр событий. Например, можно написать средство просмотра для событий или программу, которая проверяет журнал событий и создает отчеты, включающие сведения из данных, относящихся к событиям.

Перед использованием необходимо задать Source свойство компонента EventLog перед использованием WriteEventкомпонента . Указанный источник должен быть настроен для записи локализованных записей в журнал; в источнике должен быть определен как минимум файл ресурсов сообщения.

Перед записью первой записи с помощью источника необходимо создать и настроить источник событий. Create новый источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Примечание

Если не указать для экземпляра EventLog перед вызовом MachineNameWriteEvent, предполагается локальный компьютер (".").

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Используйте метод , WriteEntry если приложение записывает строковые значения непосредственно в журнал событий.

Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

Примечание

Если запись записывается на удаленный компьютер, значение message строки может не быть ожидаемым, если на удаленном компьютере не выполняется платформа .NET Framework. Кроме того, message строка не может содержать %n, где n — целочисленное значение (например, %1), так как средство просмотра событий рассматривает ее как строку вставки. Так как ip-адрес версии 6 (IPv6) может содержать эту последовательность символов, невозможно записать в журнал сообщение о событии, содержащее IPv6-адрес.

См. также раздел

Применяется к

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

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Вносит в журнал событий запись с заданными данными сообщения, строками замещения сообщения и связанными двоичными данными, используя указанный зарегистрированный источник событий.

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

Параметры

source
String

Имя источника событий, зарегистрированного для приложения на заданном компьютере.

instance
EventInstance

Экземпляр EventInstance, который представляет локализованную запись журнала событий.

data
Byte[]

Массив байтов, в котором хранятся двоичные данные, связанные с записью.

values
Object[]

Массив строк для слияния в текстовое сообщение записи журнала событий.

Исключения

Значением source является пустая строка ("").

-или-

Значение source равно null.

-или-

instance.InstanceId значение меньше нуля или больше UInt16.MaxValue.

-или-

values содержит более 256 элементов.

-или-

Один из элементов values длиннее 32766 байт.

-или-

При таком имени источника длина пути к разделу реестра превышает 254 символа.

instance имеет значение null.

Не удается открыть раздел реестра для журнала событий.

Операционная система сообщила об ошибке при записи сведений о событии в журнал событий. Код ошибки Windows недоступен.

Примеры

В следующем примере записывается информационная запись события и запись предупреждения в существующий журнал событий. Текст сообщения о событии указывается с помощью идентификатора ресурса в файле ресурсов. В примере предполагается, что соответствующий файл ресурсов зарегистрирован для источника.

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

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

    // Define an informational event and a warning event.

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

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

    // Write the events to the event log.

    EventLog.WriteEvent(sourceName, myInfoEvent);

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

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

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

               EventLog.WriteEvent(sourceName, myInfoEvent, insertStrings)

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

В примере используется следующий текстовый файл сообщения, встроенный в библиотеку ресурсов EventLogMsgs.dll. Текстовый файл сообщения — это источник, из которого создается файл ресурсов сообщения. Текстовый файл сообщения определяет идентификаторы ресурсов и текст для категорий, сообщений о событии и строк вставки параметров.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии

Используйте этот метод для записи локализованной записи с дополнительными данными о событиях в журнал событий, используя источник, уже зарегистрированный в качестве источника событий для соответствующего журнала. Свойства события указываются с помощью идентификаторов ресурсов, а не строковых значений. Просмотр событий использует идентификаторы ресурсов для отображения соответствующих строк из локализованного файла ресурсов для источника. Перед записью событий с помощью идентификаторов ресурсов необходимо зарегистрировать источник в соответствующем файле ресурсов.

Входной instance экземпляр указывает сообщение о событии и свойства. InstanceIdinstance Задайте входные данные для определенного сообщения в файле ресурсов исходного сообщения. При необходимости можно задать CategoryId и EntryType входных данных, instance чтобы определить категорию и тип события записи события. Можно также указать массив строк, не зависящих от языка, для вставки в текст локализованного сообщения. Задайте значение values , null если сообщение о событии не содержит заполнители форматирования для заменяющих строк.

Укажите двоичные данные с событием, если необходимо предоставить дополнительные сведения о событии. Например, используйте параметр , data чтобы включить сведения о конкретной ошибке. Просмотр событий не интерпретирует связанные данные события, а отображает данные в комбинированном шестнадцатеричном и текстовом формате. Использовать данные, относящиеся к событиям, экономно; включать его только в том случае, если вы уверены, что это будет полезно. Вы также можете использовать данные, относящиеся к событиям, для хранения информации, которую приложение может обрабатывать независимо от Просмотр событий. Например, можно написать средство просмотра для событий или программу, которая проверяет журнал событий и создает отчеты, включающие сведения из данных, относящихся к событиям.

Указанный источник должен быть зарегистрирован для журнала событий перед использованием WriteEvent. Указанный источник должен быть настроен для записи локализованных записей в журнал; в источнике должен быть определен как минимум файл ресурсов сообщения.

Перед записью первой записи с помощью источника необходимо создать и настроить источник событий. Create новый источник событий во время установки приложения. Это позволяет операционной системе обновить список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила свой список источников событий и вы попытаелись записать событие с новым источником, операция записи завершится ошибкой. Вы можете настроить новый источник с помощью EventLogInstallerили с помощью CreateEventSource метода . Для создания нового источника событий необходимо иметь права администратора на компьютере.

Источник должен быть настроен для записи локализованных записей или для записи прямых строк. Используйте метод , WriteEntry если приложение записывает строковые значения непосредственно в журнал событий.

Если приложение записывает записи с использованием идентификаторов ресурсов и строковых значений, необходимо зарегистрировать два отдельных источника. Например, настройте один источник с файлами ресурсов, а затем используйте этот источник в методе WriteEvent для записи записей с помощью идентификаторов ресурсов в журнал событий. Затем создайте другой источник без файлов ресурсов и используйте этот источник в методе WriteEntry для записи строк непосредственно в журнал событий с помощью этого источника.

См. также раздел

Применяется к