EventLog.WriteEvent Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Escreve uma entrada de evento localizada no registo de eventos.
Sobrecargas
| Name | Description |
|---|---|
| WriteEvent(String, EventInstance, Object[]) |
Escreve uma entrada no registo de eventos com os dados de eventos fornecidos e as cadeias de substituição de mensagens, usando a fonte de eventos registada especificada. |
| WriteEvent(EventInstance, Object[]) |
Escreve uma entrada localizada no registo de eventos. |
| WriteEvent(EventInstance, Byte[], Object[]) |
Escreve uma entrada no registo de eventos com os dados fornecidos do evento, cadeias de substituição de mensagens e dados binários associados. |
| WriteEvent(String, EventInstance, Byte[], Object[]) |
Escreve uma entrada no registo de eventos com os dados fornecidos, cadeias de substituição de mensagens e dados binários associados, utilizando a fonte de eventos registada especificada. |
WriteEvent(String, EventInstance, Object[])
Escreve uma entrada no registo de eventos com os dados de eventos fornecidos e as cadeias de substituição de mensagens, usando a fonte de eventos registada especificada.
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())
Parâmetros
- source
- String
O nome da fonte do evento registada para a aplicação no computador especificado.
- instance
- EventInstance
Uma instância que representa uma entrada localizada no EventInstance registo de eventos.
- values
- Object[]
Um array de cadeias para fundir no texto da mensagem da entrada do registo de eventos.
Exceções
O source valor é uma cadeia vazia ("").
-ou-
O source valor é null.
-ou-
instance.InstanceId é inferior a zero ou maior que UInt16.MaxValue.
-ou-
values tem mais de 256 elementos.
-ou-
Um dos values elementos tem mais de 32766 bytes.
-ou-
O nome de origem resulta num caminho de chave de registo com mais de 254 caracteres.
instance é null.
A chave do registo para o registo de eventos não conseguiu ser aberta.
O sistema operativo reportava um erro ao escrever a entrada do evento no registo de eventos. Não existe código de erro do Windows.
Exemplos
O exemplo seguinte escreve uma entrada de evento informativo e uma entrada de evento de aviso num registo de eventos existente. O texto da mensagem do evento é especificado usando um identificador de recurso num ficheiro de recurso. O exemplo assume que o ficheiro de recurso correspondente foi registado para a fonte.
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
O exemplo utiliza o seguinte ficheiro de texto da mensagem, integrado na biblioteca de recursos EventLogMsgs.dll. Um ficheiro de texto de mensagem é a fonte a partir da qual o ficheiro de recurso da mensagem é criado. O ficheiro de texto da mensagem define os identificadores de recursos e o texto para as cadeias de inserção de categoria, mensagem de evento e parâmetros.
; // 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
.
Observações
Use este método para escrever uma entrada localizada no registo de eventos, usando uma fonte já registada como fonte de eventos para o registo apropriado. Especificas as propriedades do evento com identificadores de recursos em vez de valores de string. O Visualizador de Eventos utiliza os identificadores de recursos para mostrar as correspondentes strings do ficheiro de recurso localizado para a fonte. Deve registar a fonte com o ficheiro de recurso correspondente antes de escrever eventos usando identificadores de recurso.
A instância de entrada instance especifica a mensagem do evento e as propriedades. Defina o InstanceId da instance entrada para a mensagem definida no ficheiro de recursos da mensagem de origem. Pode opcionalmente definir o CategoryId e EntryType da instance entrada para definir a categoria e o tipo de evento da sua entrada de evento. Também pode especificar um array de cadeias independentes da língua para inserir no texto localizado da mensagem. Definido values para null se a mensagem do evento não contiver marcadores de formatação para cadeias de substituição.
A fonte especificada deve estar registada num registo de eventos antes de usar WriteEvent. A fonte especificada deve ser configurada para escrever entradas localizadas no log; a fonte deve, no mínimo, ter um ficheiro de recurso de mensagem definido.
Deve criar e configurar a fonte do evento antes de escrever a primeira entrada com a fonte. Crie a nova fonte de eventos durante a instalação da sua aplicação. Isto permite que o sistema operativo atualize a sua lista de fontes de eventos registadas e a sua configuração. Se o sistema operativo não atualizou a sua lista de fontes de eventos, e tentar escrever um evento com a nova fonte, a operação de escrita falhará. Pode configurar uma nova fonte usando um EventLogInstaller, ou usando o CreateEventSource método. Deve ter direitos administrativos no computador para criar uma nova fonte de eventos.
A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. Use o WriteEntry método se a sua aplicação escrever valores de string diretamente no registo de eventos.
Se a sua aplicação escrever entradas usando tanto identificadores de recursos como valores de cadeia, deve registar duas fontes separadas. Por exemplo, configure uma fonte com ficheiros de recursos e depois use essa fonte no WriteEvent método para escrever entradas usando identificadores de recurso no registo de eventos. Depois cria uma fonte diferente sem ficheiros de recurso e usa essa fonte no WriteEntry método para escrever strings diretamente no registo de eventos usando essa fonte.
Ver também
Aplica-se a
WriteEvent(EventInstance, Object[])
Escreve uma entrada localizada no registo de eventos.
public:
void WriteEvent(System::Diagnostics::EventInstance ^ instance, ... cli::array <System::Object ^> ^ values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent(System.Diagnostics.EventInstance instance, params object[] values);
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.WriteEvent : System.Diagnostics.EventInstance * obj[] -> unit
Public Sub WriteEvent (instance As EventInstance, ParamArray values As Object())
Parâmetros
- instance
- EventInstance
Uma instância que representa uma entrada localizada no EventInstance registo de eventos.
- values
- Object[]
Um array de cadeias para fundir no texto da mensagem da entrada do registo de eventos.
- Atributos
Exceções
A Source propriedade do EventLog não foi definida.
-ou-
O método tentou registar uma nova fonte de evento, mas o nome do computador em MachineName não é válido.
-ou-
A fonte já está registada para um registo de eventos diferente.
-ou-
instance.InstanceId é inferior a zero ou maior que UInt16.MaxValue.
-ou-
values tem mais de 256 elementos.
-ou-
Um dos values elementos tem mais de 32766 bytes.
-ou-
O nome de origem resulta num caminho de chave de registo com mais de 254 caracteres.
instance é null.
A chave do registo para o registo de eventos não conseguiu ser aberta.
O sistema operativo reportava um erro ao escrever a entrada do evento no registo de eventos. Não existe código de erro do Windows.
Exemplos
O exemplo seguinte escreve duas entradas de auditoria no registo myNewLogde eventos. O exemplo cria uma nova fonte de eventos e um novo registo de eventos se estes não existirem no computador local. O texto da mensagem do evento é especificado usando um identificador de recurso num ficheiro de recurso.
// 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)
O exemplo utiliza o seguinte ficheiro de texto da mensagem, integrado na biblioteca de recursos EventLogMsgs.dll. Um ficheiro de texto de mensagem é a fonte a partir da qual o ficheiro de recurso da mensagem é criado. O ficheiro de texto da mensagem define os identificadores de recursos e o texto para as cadeias de inserção de categoria, mensagem de evento e parâmetros.
; // 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
.
Observações
Use este método para escrever uma entrada localizada no registo de eventos. Especificas as propriedades do evento com identificadores de recursos em vez de valores de string. O Visualizador de Eventos utiliza os identificadores de recursos para mostrar as correspondentes cadeias do ficheiro de recurso localizado para o Source. Deve registar a fonte com o ficheiro de recurso correspondente antes de escrever eventos usando identificadores de recurso.
A instância de entrada instance especifica a mensagem do evento e as propriedades. Defina o InstanceId da instance entrada para a mensagem definida no ficheiro de recursos da mensagem de origem. Pode opcionalmente definir o CategoryId e EntryType da instance entrada para definir a categoria e o tipo de evento da sua entrada de evento. Também pode especificar um array de cadeias independentes da língua para inserir no texto localizado da mensagem. Definido values para null se a mensagem do evento não contiver marcadores de formatação para cadeias de substituição.
Deve definir a Source propriedade no seu EventLog componente antes de usar WriteEvent. A fonte especificada deve ser configurada para escrever entradas localizadas no log; a fonte deve, no mínimo, ter um ficheiro de recurso de mensagem definido.
Deve criar e configurar a fonte do evento antes de escrever a primeira entrada com a fonte. Crie a nova fonte de eventos durante a instalação da sua aplicação. Isto permite que o sistema operativo atualize a sua lista de fontes de eventos registadas e a sua configuração. Se o sistema operativo não atualizou a sua lista de fontes de eventos, e tentar escrever um evento com a nova fonte, a operação de escrita falhará. Pode configurar uma nova fonte usando um EventLogInstaller, ou usando o CreateEventSource método. Deve ter direitos administrativos no computador para criar uma nova fonte de eventos.
A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. Use o WriteEntry método se a sua aplicação escrever valores de string diretamente no registo de eventos.
Se a sua aplicação escrever entradas usando tanto identificadores de recursos como valores de cadeia, deve registar duas fontes separadas. Por exemplo, configure uma fonte com ficheiros de recursos e depois use essa fonte no WriteEvent método para escrever entradas usando identificadores de recurso no registo de eventos. Depois cria uma fonte diferente sem ficheiros de recurso e usa essa fonte no WriteEntry método para escrever strings diretamente no registo de eventos usando essa fonte.
Note
Se escrever uma entrada num computador remoto, o valor da cadeia message pode não ser o que espera se o computador remoto não estiver a correr .NET. Além disso, a message cadeia não pode conter %n, onde n é um valor inteiro (por exemplo, %1), porque o visualizador de eventos a trata como uma cadeia de inserção. Como um endereço do Protocolo Internet, versão 6 (IPv6) pode conter esta sequência de caracteres, não pode registar uma mensagem de evento que contenha um endereço IPv6.
Ver também
Aplica-se a
WriteEvent(EventInstance, Byte[], Object[])
Escreve uma entrada no registo de eventos com os dados fornecidos do evento, cadeias de substituição de mensagens e dados binários associados.
public:
void WriteEvent(System::Diagnostics::EventInstance ^ instance, cli::array <System::Byte> ^ data, ... cli::array <System::Object ^> ^ values);
[System.Runtime.InteropServices.ComVisible(false)]
public void WriteEvent(System.Diagnostics.EventInstance instance, byte[] data, params object[] values);
[<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())
Parâmetros
- instance
- EventInstance
Uma instância que representa uma entrada localizada no EventInstance registo de eventos.
- data
- Byte[]
Um array de bytes que contém os dados binários associados à entrada.
- values
- Object[]
Um array de cadeias para fundir no texto da mensagem da entrada do registo de eventos.
- Atributos
Exceções
A Source propriedade do EventLog não foi definida.
-ou-
O método tentou registar uma nova fonte de evento, mas o nome do computador em MachineName não é válido.
-ou-
A fonte já está registada para um registo de eventos diferente.
-ou-
instance.InstanceId é inferior a zero ou maior que UInt16.MaxValue.
-ou-
values tem mais de 256 elementos.
-ou-
Um dos values elementos tem mais de 32766 bytes.
-ou-
O nome de origem resulta num caminho de chave de registo com mais de 254 caracteres.
instance é null.
A chave do registo para o registo de eventos não conseguiu ser aberta.
O sistema operativo reportava um erro ao escrever a entrada do evento no registo de eventos. Não existe código de erro do Windows.
Exemplos
O exemplo seguinte escreve duas entradas de auditoria no registo myNewLogde eventos. O exemplo cria uma nova fonte de eventos e um novo registo de eventos se estes não existirem no computador local. O texto da mensagem do evento é especificado usando um identificador de recurso num ficheiro de recurso.
// 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)
O exemplo utiliza o seguinte ficheiro de texto da mensagem, integrado na biblioteca de recursos EventLogMsgs.dll. Um ficheiro de texto de mensagem é a fonte a partir da qual o ficheiro de recurso da mensagem é criado. O ficheiro de texto da mensagem define os identificadores de recursos e o texto para as cadeias de inserção de categoria, mensagem de evento e parâmetros.
; // 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
.
Observações
Use este método para escrever uma entrada localizada com dados adicionais específicos de evento no registo de eventos. Especificas as propriedades do evento com identificadores de recursos em vez de valores de string. O Visualizador de Eventos utiliza os identificadores de recursos para mostrar as correspondentes cadeias do ficheiro de recurso localizado para o Source. Deve registar a fonte com o ficheiro de recurso correspondente antes de escrever eventos usando identificadores de recurso.
A instância de entrada instance especifica a mensagem do evento e as propriedades. Defina o InstanceId da instance entrada para a mensagem definida no ficheiro de recursos da mensagem de origem. Pode opcionalmente definir o CategoryId e EntryType da instance entrada para definir a categoria e o tipo de evento da sua entrada de evento. Também pode especificar um array de cadeias independentes da língua para inserir no texto localizado da mensagem. Definido values para null se a mensagem do evento não contiver marcadores de formatação para cadeias de substituição.
Especifique dados binários com um evento quando for necessário fornecer detalhes adicionais para o evento. Por exemplo, use o data parâmetro para incluir informação sobre um erro específico. O Visualizador de Eventos não interpreta os dados de eventos associados; apresenta os dados num formato combinado hexadecimal e texto. Use dados específicos de eventos com moderação; Inclua-a apenas se tiver a certeza de que será útil. Também pode usar dados específicos de eventos para armazenar informação que a aplicação pode processar independentemente do Visualizador de Eventos. Por exemplo, pode escrever um visualizador especificamente para os seus eventos, ou escrever um programa que analise o registo de eventos e crie relatórios que incluam informações dos dados específicos do evento.
Deve definir a Source propriedade no seu EventLog componente antes do componente antes de usar WriteEvent. A fonte especificada deve ser configurada para escrever entradas localizadas no log; a fonte deve, no mínimo, ter um ficheiro de recurso de mensagem definido.
Deve criar e configurar a fonte do evento antes de escrever a primeira entrada com a fonte. Crie a nova fonte de eventos durante a instalação da sua aplicação. Isto permite que o sistema operativo atualize a sua lista de fontes de eventos registadas e a sua configuração. Se o sistema operativo não atualizou a sua lista de fontes de eventos, e tentar escrever um evento com a nova fonte, a operação de escrita falhará. Pode configurar uma nova fonte usando um EventLogInstaller, ou usando o CreateEventSource método. Deve ter direitos administrativos no computador para criar uma nova fonte de eventos.
Note
Se não especificar um MachineName para a sua EventLog instância antes de chamar WriteEvent, assume-se que o computador local (".") é assumido.
A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. Use o WriteEntry método se a sua aplicação escrever valores de string diretamente no registo de eventos.
Se a sua aplicação escrever entradas usando tanto identificadores de recursos como valores de cadeia, deve registar duas fontes separadas. Por exemplo, configure uma fonte com ficheiros de recursos e depois use essa fonte no WriteEvent método para escrever entradas usando identificadores de recurso no registo de eventos. Depois cria uma fonte diferente sem ficheiros de recurso e usa essa fonte no WriteEntry método para escrever strings diretamente no registo de eventos usando essa fonte.
Note
Se escreveres uma entrada num computador remoto, o valor da cadeia message pode não ser o que esperas se o computador remoto não estiver a correr o .NET Framework. Além disso, a message cadeia não pode conter %n, onde n é um valor inteiro (por exemplo, %1), porque o visualizador de eventos a trata como uma cadeia de inserção. Como um endereço do Protocolo Internet, versão 6 (IPv6) pode conter esta sequência de caracteres, não pode registar uma mensagem de evento que contenha um endereço IPv6.
Ver também
Aplica-se a
WriteEvent(String, EventInstance, Byte[], Object[])
Escreve uma entrada no registo de eventos com os dados fornecidos, cadeias de substituição de mensagens e dados binários associados, utilizando a fonte de eventos registada especificada.
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())
Parâmetros
- source
- String
O nome da fonte do evento registada para a aplicação no computador especificado.
- instance
- EventInstance
Uma instância que representa uma entrada localizada no EventInstance registo de eventos.
- data
- Byte[]
Um array de bytes que contém os dados binários associados à entrada.
- values
- Object[]
Um array de cadeias para fundir no texto da mensagem da entrada do registo de eventos.
Exceções
O source valor é uma cadeia vazia ("").
-ou-
O source valor é null.
-ou-
instance.InstanceId é inferior a zero ou maior que UInt16.MaxValue.
-ou-
values tem mais de 256 elementos.
-ou-
Um dos values elementos tem mais de 32766 bytes.
-ou-
O nome de origem resulta num caminho de chave de registo com mais de 254 caracteres.
instance é null.
A chave do registo para o registo de eventos não conseguiu ser aberta.
O sistema operativo reportava um erro ao escrever a entrada do evento no registo de eventos. Não existe código de erro do Windows.
Exemplos
O exemplo seguinte escreve uma entrada de evento informativo e uma entrada de evento de aviso num registo de eventos existente. O texto da mensagem do evento é especificado usando um identificador de recurso num ficheiro de recurso. O exemplo assume que o ficheiro de recurso correspondente foi registado para a fonte.
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
O exemplo utiliza o seguinte ficheiro de texto da mensagem, integrado na biblioteca de recursos EventLogMsgs.dll. Um ficheiro de texto de mensagem é a fonte a partir da qual o ficheiro de recurso da mensagem é criado. O ficheiro de texto da mensagem define os identificadores de recursos e o texto para as cadeias de inserção de categoria, mensagem de evento e parâmetros.
; // 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
.
Observações
Use este método para escrever uma entrada localizada com dados adicionais específicos de evento no registo de eventos, usando uma fonte já registada como fonte de eventos para o registo apropriado. Especificas as propriedades do evento com identificadores de recursos em vez de valores de string. O Visualizador de Eventos utiliza os identificadores de recursos para mostrar as correspondentes strings do ficheiro de recurso localizado para a fonte. Deve registar a fonte com o ficheiro de recurso correspondente antes de escrever eventos usando identificadores de recurso.
A instância de entrada instance especifica a mensagem do evento e as propriedades. Defina o InstanceId da instance entrada para a mensagem definida no ficheiro de recursos da mensagem de origem. Pode opcionalmente definir o CategoryId e EntryType da instance entrada para definir a categoria e o tipo de evento da sua entrada de evento. Também pode especificar um array de cadeias independentes da língua para inserir no texto localizado da mensagem. Definido values para null se a mensagem do evento não contiver marcadores de formatação para cadeias de substituição.
Especifique dados binários com um evento quando for necessário fornecer detalhes adicionais para o evento. Por exemplo, use o data parâmetro para incluir informação sobre um erro específico. O Visualizador de Eventos não interpreta os dados de eventos associados; apresenta os dados num formato combinado hexadecimal e texto. Use dados específicos de eventos com moderação; Inclua-a apenas se tiver a certeza de que será útil. Também pode usar dados específicos de eventos para armazenar informação que a aplicação pode processar independentemente do Visualizador de Eventos. Por exemplo, pode escrever um visualizador especificamente para os seus eventos, ou escrever um programa que analise o registo de eventos e crie relatórios que incluam informações dos dados específicos do evento.
A fonte especificada deve estar registada num registo de eventos antes de usar WriteEvent. A fonte especificada deve ser configurada para escrever entradas localizadas no log; a fonte deve, no mínimo, ter um ficheiro de recurso de mensagem definido.
Deve criar e configurar a fonte do evento antes de escrever a primeira entrada com a fonte. Crie a nova fonte de eventos durante a instalação da sua aplicação. Isto permite que o sistema operativo atualize a sua lista de fontes de eventos registadas e a sua configuração. Se o sistema operativo não atualizou a sua lista de fontes de eventos, e tentar escrever um evento com a nova fonte, a operação de escrita falhará. Pode configurar uma nova fonte usando um EventLogInstaller, ou usando o CreateEventSource método. Deve ter direitos administrativos no computador para criar uma nova fonte de eventos.
A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. Use o WriteEntry método se a sua aplicação escrever valores de string diretamente no registo de eventos.
Se a sua aplicação escrever entradas usando tanto identificadores de recursos como valores de cadeia, deve registar duas fontes separadas. Por exemplo, configure uma fonte com ficheiros de recursos e depois use essa fonte no WriteEvent método para escrever entradas usando identificadores de recurso no registo de eventos. Depois cria uma fonte diferente sem ficheiros de recurso e usa essa fonte no WriteEntry método para escrever strings diretamente no registo de eventos usando essa fonte.