EventLog Classe
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.
Proporciona interação com registos de eventos do Windows.
public ref class EventLog : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class EventLog : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type EventLog = class
inherit Component
interface ISupportInitialize
Public Class EventLog
Inherits Component
Implements ISupportInitialize
- Herança
- Implementações
Exemplos
O exemplo seguinte cria a fonte MySource do evento se esta ainda não existir, e escreve uma entrada no registo MyNewLogde eventos .
Note
Deve executar esta aplicação como administrador.
using System;
using System.Diagnostics;
using System.Threading;
class MySample{
public static void Main(){
// Create the source, if it does not already exist.
if(!EventLog.SourceExists("MySource"))
{
//An event log source should not be created and immediately used.
//There is a latency time to enable the source, it should be created
//prior to executing the application that uses the source.
//Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog");
Console.WriteLine("CreatedEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}
// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySource";
// Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.");
}
}
Option Explicit
Option Strict
Imports System.Diagnostics
Imports System.Threading
Class MySample
Public Shared Sub Main()
If Not EventLog.SourceExists("MySource") Then
' Create the source, if it does not already exist.
' An event log source should not be created and immediately used.
' There is a latency time to enable the source, it should be created
' prior to executing the application that uses the source.
' Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog")
Console.WriteLine("CreatingEventSource")
'The source is created. Exit the application to allow it to be registered.
Return
End If
' Create an EventLog instance and assign its source.
Dim myLog As New EventLog()
myLog.Source = "MySource"
' Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.")
End Sub
End Class
Observações
EventLog permite-lhe aceder ou personalizar registos de eventos Windows, que registam informações sobre eventos importantes de software ou hardware. Usando EventLog, pode ler registos existentes, escrever entradas nos registos, criar ou eliminar fontes de eventos, apagar registos e responder a entradas de registo. Também pode criar novos registos ao criar uma fonte de eventos.
Importante
Este tipo implementa a interface IDisposable. Quando terminar de usar o tipo, você deve eliminá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame seu método Dispose em um bloco try/catch. Para descartá-lo indiretamente, use uma construção de linguagem como using (em C#) ou Using (em Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa IDisposable" no tópico da IDisposable interface.
Para além de fornecer acesso a registos de eventos individuais e respetivas entradas, a EventLog classe permite-lhe aceder à coleção de todos os registos de eventos. Pode usar os static membros de EventLog para apagar registos, obter listas de registos, criar ou eliminar uma fonte, ou determinar se um computador já contém uma fonte específica.
Existem três registos de eventos predefinidos: Aplicação, Sistema e Segurança. Um registo de segurança é apenas de leitura. Outras aplicações e serviços que instale, como o Active Directory, podem ter registos de eventos adicionais.
Existem considerações de segurança ao usar a EventLog aula. EventLog Requer EventLogPermission permissões para ações específicas. Recomendamos que EventLogPermission não seja concedido a código parcialmente confiável. Nunca deve passar qualquer objeto do registo de eventos, incluindo EventLogEntryCollection objetos and EventLogEntry , para código menos confiável. Por exemplo, criar um EventLog objeto, escrever uma entrada e depois passar o EventLog objeto para código parcialmente confiável pode criar um problema de segurança, porque a capacidade de ler e escrever no registo de eventos permite que o código execute ações como emitir mensagens do registo de eventos em nome de outra aplicação.
A partir do Windows Vista, o Controlo de Conta de Utilizador (UAC) determina as credenciais de um utilizador. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acede ao registo de Segurança, deve primeiro elevar as suas credenciais de utilizador padrão para administrador. Pode fazer isto ao iniciar uma aplicação abrindo o menu de atalho da aplicação (se estiver a usar um rato, clique com o botão direito no ícone da aplicação) e indicando que quer correr como administrador.
Podes usar EventLog para criar registos de eventos personalizados que podes visualizar através do Visualizador de Eventos do servidor. Use o método RegisterDisplayName para mostrar um nome localizado para o seu registo de eventos no Visualizador de Eventos. Use o ModifyOverflowPolicy método para configurar o comportamento do seu registo de eventos quando atingir o tamanho máximo do registo.
Para ler a partir de um registo de eventos, especifique o nome do registo (Log propriedade) e o nome do computador servidor (MachineName propriedade para o registo de eventos). Se não especificar o nome do computador servidor, assume-se o computador local, ".". Não é necessário especificar a fonte do evento (Source propriedade), porque uma fonte é necessária apenas para escrever nos logs. A Entries propriedade é automaticamente preenchida com a lista de entradas do registo de eventos.
Para escrever num registo de eventos, especifique ou crie uma fonte de evento (Source propriedade). Deve ter credenciais administrativas no computador para criar uma nova fonte de eventos. A fonte de eventos regista a sua aplicação no registo de eventos como fonte válida de entradas. Podes usar a fonte do evento para escrever apenas num registo de cada vez. A Source propriedade pode ser qualquer cadeia aleatória, mas o nome deve ser distinto de outras fontes no computador. A fonte do evento é tipicamente o nome da aplicação ou outra cadeia identificadora. Tentar criar um valor duplicado Source cria uma exceção. No entanto, um único registo de eventos pode ser associado a múltiplas fontes.
Se a fonte de eventos do registo de eventos associada à EventLog instância não existir, é criada uma nova fonte de eventos. Para criar uma fonte de evento no Windows Vista e versões posteriores ou no Windows Server 2003, deve ter credenciais administrativas.
Este requisito deve-se ao facto de todos os registos de eventos, incluindo os registos de segurança, terem de ser pesquisados para determinar se a fonte do evento é única. A partir de Windows Vista, os utilizadores não têm permissão para aceder ao registo de Segurança; por isso, é lançado um SecurityException.
Importante
Criar ou eliminar uma fonte de evento requer a sincronização do código subjacente usando um mutex nomeado. Se uma aplicação altamente privilegiada bloquear o mutex nomeado, tentar criar ou eliminar uma fonte de evento faz com que a aplicação deixe de responder até que o bloqueio seja libertado. Para ajudar a prevenir este problema, nunca conceda UnmanagedCode permissão a código não confiável. Além disso, UnmanagedCode a permissão permite potencialmente que outras permissões sejam contornadas e só deve ser concedida a código altamente confiável.
As aplicações e serviços devem escrever no registo de aplicações ou num registo personalizado. Os drivers de dispositivo devem escrever no registo do sistema. Se não definir explicitamente a Log propriedade, o registo de eventos passa por defeito ao registo de aplicação.
Note
Não há nada que proteja uma candidatura de ser escrita como fonte registada. Se uma aplicação for autorizada Write , pode escrever eventos para qualquer fonte válida registada no computador.
Use os WriteEvent métodos e WriteEntry para escrever eventos num registo de eventos. Deve especificar uma fonte de eventos para escrever eventos; Deve criar e configurar o código-fonte do evento antes de escrever a primeira entrada com o código-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 objeto ou o CreateEventSource método. Deve ter credenciais administrativas no computador para criar uma nova fonte de eventos.
Cada fonte pode escrever apenas num registo de eventos de cada vez; No entanto, a sua aplicação pode usar múltiplas fontes para escrever em vários registos de eventos. Por exemplo, a sua aplicação pode exigir múltiplas fontes configuradas para diferentes registos de eventos ou diferentes ficheiros de recursos. Para alterar os detalhes de configuração de uma fonte existente, tem de apagar a fonte e depois criá-la com a nova configuração. Se outras aplicações ou componentes usarem a fonte existente, crie uma nova fonte com a configuração atualizada em vez de eliminar a fonte existente.
Pode registar a fonte do evento com recursos localizados para a sua categoria de evento e as cadeias de mensagens. A sua aplicação pode escrever entradas no registo de eventos usando identificadores de recursos em vez de especificar os valores reais da cadeia. Consulte as EventLogInstaller classes e EventSourceCreationData para mais informações sobre como configurar a sua fonte com ficheiros de recursos.
Se a sua aplicação escrever valores de cadeia diretamente no registo de eventos, não precisa de definir as propriedades do ficheiro de recurso para a fonte. A fonte deve ser configurada para escrever entradas localizadas ou para escrever strings diretas. 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.
Ao escrever eventos, deve pelo menos especificar uma cadeia de mensagens ou o identificador de recurso para uma cadeia de mensagem. Outras propriedades de eventos são opcionais. Exemplos de configurações opcionais de eventos incluem as seguintes:
Podes definir o EventLogEntryType para especificar o ícone que o Visualizador de Eventos mostra para a entrada.
Pode especificar um identificador de categoria para o evento, se a sua aplicação usar categorias para filtrar os eventos.
Pode anexar dados binários à entrada do seu evento se quiser associar informação adicional a um determinado evento.
Importante
O registo de eventos consome espaço em disco, tempo de processador e outros recursos do sistema. É importante registar apenas informações essenciais. Recomendamos que coloque as chamadas do registo de eventos num caminho de erro, em vez de no caminho principal do código, para que não afetem negativamente o desempenho.
Para obter uma lista de valores das propriedades iniciais de uma instância de EventLog, consulte o construtor EventLog.
Construtores
| Name | Description |
|---|---|
| EventLog() |
Inicializa uma nova instância da EventLog classe. Não associa a instância a nenhum log. |
| EventLog(String, String, String) |
Inicializa uma nova instância da EventLog classe. Associa a instância a um log no computador especificado e cria ou atribui a fonte especificada ao EventLog. |
| EventLog(String, String) |
Inicializa uma nova instância da EventLog classe. Associa a instância a um registo no computador especificado. |
| EventLog(String) |
Inicializa uma nova instância da EventLog classe. Associa a instância a um registo no computador local. |
Propriedades
| Name | Description |
|---|---|
| CanRaiseEvents |
Obtém um valor que indica se o componente pode gerar um evento. (Herdado de Component) |
| Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
| DesignMode |
Obtém um valor que indica se o Component está atualmente em modo de design. (Herdado de Component) |
| EnableRaisingEvents |
Recebe ou define um valor que indica se recebe EventLogEntryWritten notificações de eventos. |
| Entries |
Obtém o conteúdo do registo de eventos. |
| Events |
Obtém a lista de gestores de eventos que estão ligados a isto Component. (Herdado de Component) |
| Log |
Recebe ou define o nome do registo para ler ou escrever. |
| LogDisplayName |
Obtém o nome amigável do registo de eventos. |
| MachineName |
Obtém ou define o nome do computador onde ler ou escrever eventos. |
| MaximumKilobytes |
Obtém ou define o tamanho máximo do registo de eventos em kilobytes. |
| MinimumRetentionDays |
Esta propriedade está obsoleta. |
| OverflowAction |
Obtém o comportamento configurado para armazenar novas entradas quando o registo de eventos atinge o tamanho máximo do ficheiro de registo. |
| Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
| Source |
Recebe ou define o nome de origem para registar e usar ao escrever no registo de eventos. |
| SynchronizingObject |
Obtém ou define o objeto usado para marcarizar as chamadas do gestor de eventos emitidas como resultado de um EventLog evento escrito na entrada. |
Métodos
| Name | Description |
|---|---|
| BeginInit() |
Inicia a inicialização de um EventLog usado num formulário ou usado por outro componente. A inicialização ocorre em tempo de execução. |
| Clear() |
Remove todas as entradas do registo de eventos. |
| Close() |
Fecha o registo de eventos e liberta os handles de leitura e escrita. |
| CreateEventSource(EventSourceCreationData) |
Estabelece uma fonte de evento válida para escrever mensagens de eventos localizadas, usando as propriedades de configuração especificadas para a fonte do evento e o registo de eventos correspondente. |
| CreateEventSource(String, String, String) |
Obsoleto.
Estabelece o nome da fonte especificado como uma fonte de evento válida para escrever entradas num registo no computador especificado. Este método também pode ser usado para criar um novo registo personalizado no computador especificado. |
| CreateEventSource(String, String) |
Estabelece o nome da fonte especificado como uma fonte de evento válida para escrever entradas num registo no computador local. Este método também pode criar um novo registo personalizado no computador local. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Delete(String, String) |
Remove um registo de eventos do computador especificado. |
| Delete(String) |
Remove um registo de eventos do computador local. |
| DeleteEventSource(String, String) |
Remove o registo da fonte de eventos da aplicação do computador especificado. |
| DeleteEventSource(String) |
Remove o registo da fonte de eventos do registo de eventos do computador local. |
| Dispose() |
Liberta todos os recursos utilizados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo EventLog, e opcionalmente liberta os recursos geridos. |
| EndInit() |
Termina a inicialização de um EventLog usado num formulário ou por outro componente. A inicialização ocorre em tempo de execução. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Exists(String, String) |
Determina se o registo existe no computador especificado. |
| Exists(String) |
Determina se o registo existe no computador local. |
| GetEventLogs() |
Pesquisa todos os registos de eventos no computador local e cria um array de EventLog objetos que contêm a lista. |
| GetEventLogs(String) |
Pesquisa todos os registos de eventos no computador dado e cria um array de EventLog objetos que contêm a lista. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Devolve um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| LogNameFromSourceName(String, String) |
Obtém o nome do registo onde a fonte especificada está registada. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ModifyOverflowPolicy(OverflowAction, Int32) |
Altera o comportamento configurado para escrever novas entradas quando o registo de eventos atinge o seu tamanho máximo de ficheiro. |
| RegisterDisplayName(String, Int64) |
Especifica o nome localizado do registo de eventos, que é exibido no Visualizador de Eventos do servidor. |
| SourceExists(String, String) |
Determina se uma fonte de evento está registada num computador especificado. |
| SourceExists(String) |
Determina se uma fonte de evento está registada no computador local. |
| ToString() |
Devolve a String contendo o nome do Component, se existir. Este método não deve ser ultrapassado. (Herdado de Component) |
| WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[]) |
Escreve uma entrada com o texto da mensagem dado, identificador de evento definido pela aplicação e categoria definida pela aplicação no registo de eventos, e adiciona dados binários à mensagem. |
| WriteEntry(String, EventLogEntryType, Int32, Int16) |
Escreve uma entrada com o texto da mensagem indicado, identificador de evento definido pela aplicação e categoria definida pela aplicação no registo de eventos. |
| WriteEntry(String, EventLogEntryType, Int32) |
Escreve uma entrada com o texto da mensagem indicada e o identificador de evento definido pela aplicação no registo de eventos. |
| WriteEntry(String, EventLogEntryType) |
Grava uma entrada de erro, aviso, informação, auditoria de sucesso ou auditoria de falhas com o texto da mensagem indicada no registo de eventos. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[]) |
Escreve uma entrada com o texto da mensagem dado, identificador de evento definido pela aplicação e categoria definida pela aplicação no registo de eventos (usando a fonte de eventos registada especificada) e acrescenta dados binários à mensagem. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16) |
Escreve uma entrada com o texto da mensagem dado, identificador de evento definido pela aplicação e categoria definida pela aplicação no registo de eventos, usando a fonte de eventos registada especificada. O |
| WriteEntry(String, String, EventLogEntryType, Int32) |
Escreve uma entrada com o texto da mensagem indicado e o identificador de evento definido pela aplicação no registo de eventos, usando a fonte de evento registada especificada. |
| WriteEntry(String, String, EventLogEntryType) |
Escreve uma entrada de erro, aviso, informação, auditoria de sucesso ou auditoria de falha com o texto da mensagem indicada no registo de eventos, utilizando a fonte de evento registada especificada. |
| WriteEntry(String, String) |
Escreve uma entrada de tipo de informação com o texto da mensagem indicada no registo de eventos, usando a fonte de evento registada especificada. |
| WriteEntry(String) |
Escreve uma entrada de tipo de informação, com o texto da mensagem dado, 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(EventInstance, Object[]) |
Escreve uma entrada localizada no registo de eventos. |
| 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. |
evento
| Name | Description |
|---|---|
| Disposed |
Ocorre quando o componente é eliminado por uma chamada ao Dispose() método. (Herdado de Component) |
| EntryWritten |
Ocorre quando uma entrada é escrita num registo de eventos no computador local. |