EventLog Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece interação com logs 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 a seguir cria a origem MySource do evento se ele ainda não existir e grava uma entrada no log de eventos MyNewLog.
Observação
Você deve executar este aplicativo 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
Comentários
EventLog permite acessar ou personalizar logs de eventos do Windows, que registram informações sobre eventos importantes de software ou hardware. Usando EventLog, você pode ler de logs existentes, gravar entradas em logs, criar ou excluir fontes de eventos, excluir logs e responder a entradas de log. Você também pode criar novos logs ao criar uma fonte de evento.
Importante
Esse tipo implementa a IDisposable interface. Quando terminar de usar esse tipo ou objeto, você deverá descartá-lo de forma direta ou indireta. Para descartar o tipo diretamente, chame o método Dispose dele em um bloco try/catch. Para descartá-lo indiretamente, use um constructo de linguagem como using (em C#) ou Using (no Visual Basic). Para obter mais informações, consulte a seção "Usando um objeto que implementa idisposable" no tópico da IDisposable interface.
Além de fornecer acesso a logs de eventos individuais e suas entradas, a EventLog classe permite que você acesse a coleção de todos os logs de eventos. Você pode usar os static membros para EventLog excluir logs, obter listas de logs, criar ou excluir uma origem ou determinar se um computador já contém uma fonte específica.
Há três logs de eventos padrão: Aplicativo, Sistema e Segurança. Um log de segurança é somente leitura. Outros aplicativos e serviços instalados, como o Active Directory, podem ter logs de eventos adicionais.
Há considerações de segurança ao usar a EventLog classe. EventLog requer permissões EventLogPermission para ações específicas. Recomendamos que EventLogPermission não seja concedido ao código parcialmente confiável. Você nunca deve passar nenhum objeto de log de eventos, incluindo EventLogEntryCollection e EventLogEntry objetos, para um código menos confiável. Por exemplo, criar um EventLog objeto, escrever uma entrada e passar o EventLog objeto para um código parcialmente confiável pode criar um problema de segurança, pois a capacidade de ler e gravar no log de eventos permite que o código execute ações como emitir mensagens de log de eventos em nome de outro aplicativo.
A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina as credenciais de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário 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 acessa o log de segurança, primeiro você deve elevar suas credenciais de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo abrindo o menu de atalho do aplicativo (se estiver usando um mouse, clique com o botão direito do mouse no ícone do aplicativo) e indicando que deseja executar como administrador.
Você pode usar EventLog para criar logs de eventos personalizados que podem ser exibidos por meio do Visualizador de Eventos do servidor. Use o RegisterDisplayName método para exibir um nome localizado para o log de eventos no Visualizador de Eventos. Use o ModifyOverflowPolicy método para configurar o comportamento do log de eventos quando atingir o tamanho máximo do log.
Para ler de um log de eventos, especifique o nome do log (Log propriedade) e o nome do computador do servidor (MachineName propriedade para o log de eventos. Se você não especificar o nome do computador do servidor, o computador local, ".", será assumido. Não é necessário especificar a origem do evento (Source propriedade), pois uma origem é necessária apenas para gravar em logs. A Entries propriedade é preenchida automaticamente com a lista de entradas do log de eventos.
Para gravar em um log de eventos, especifique ou crie uma origem do evento (Source propriedade). Você deve ter credenciais administrativas no computador para criar uma nova fonte de evento. A origem do evento registra seu aplicativo com o log de eventos como uma fonte válida de entradas. Você pode usar a origem do evento para gravar em apenas um log de cada vez. A Source propriedade pode ser qualquer cadeia de caracteres aleatória, mas o nome deve ser distinto de outras fontes no computador. A origem do evento normalmente é o nome do aplicativo ou outra cadeia de caracteres de identificação. Tentar criar um valor duplicado Source gera uma exceção. No entanto, um único log de eventos pode ser associado a várias fontes.
Se a origem do evento para o log de eventos associado à EventLog instância não existir, uma nova fonte de evento será criada. Para criar uma fonte de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter credenciais administrativas.
Esse requisito ocorre porque todos os logs de eventos, incluindo logs de segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. A partir do Windows Vista, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.
Importante
Criar ou excluir uma fonte de evento requer a sincronização do código subjacente usando um mutex nomeado. Se um aplicativo altamente privilegiado bloquear o mutex nomeado, tentar criar ou excluir uma fonte de evento fará com que o aplicativo pare de responder até que o bloqueio seja liberado. Para ajudar a evitar esse problema, nunca conceda UnmanagedCode permissão a código não confiável. Além disso, UnmanagedCode a permissão potencialmente permite que outras permissões sejam ignoradas e só devem ser concedidas a código altamente confiável.
Aplicativos e serviços devem ser gravados no log do aplicativo ou em um log personalizado. Os drivers de dispositivo devem gravar no log do sistema. Se você não definir explicitamente a Log propriedade, o log de eventos será o padrão para o log de aplicativos.
Observação
Não há nada para proteger um aplicativo de escrever como qualquer fonte registrada. Se um aplicativo receber Write permissão, ele poderá gravar eventos para qualquer fonte válida registrada no computador.
Use o e WriteEntry os WriteEvent métodos para gravar eventos em um log de eventos. Você deve especificar uma fonte de evento para gravar eventos; você deve criar e configurar a origem do evento antes de gravar a primeira entrada com a origem.
Crie a nova fonte de evento durante a instalação do aplicativo. Isso permite tempo para o sistema operacional atualizar sua lista de fontes de eventos registradas e sua configuração. Se o sistema operacional não tiver atualizado sua lista de fontes de eventos e você tentar gravar um evento com a nova origem, a operação de gravação falhará. Você pode configurar uma nova fonte usando um EventLogInstaller objeto ou o CreateEventSource método. Você deve ter credenciais administrativas no computador para criar uma nova fonte de evento.
Cada fonte pode gravar em apenas um log de eventos por vez; no entanto, seu aplicativo pode usar várias fontes para gravar em vários logs de eventos. Por exemplo, seu aplicativo pode exigir várias fontes configuradas para logs de eventos diferentes ou arquivos de recursos diferentes. Para alterar os detalhes de configuração de uma origem existente, você deve excluir a origem e, em seguida, criá-la com a nova configuração. Se outros aplicativos ou componentes usarem a origem existente, crie uma nova fonte com a configuração atualizada em vez de excluir a origem existente.
Você pode registrar a origem do evento com recursos localizados para sua categoria de evento e cadeias de caracteres de mensagem. Seu aplicativo pode gravar entradas de log de eventos usando identificadores de recurso em vez de especificar os valores reais da cadeia de caracteres. Consulte as classes e EventSourceCreationData para EventLogInstaller obter mais informações sobre como configurar sua origem com arquivos de recurso.
Se o aplicativo gravar valores de cadeia de caracteres diretamente no log de eventos, você não precisará definir as propriedades do arquivo de recurso para a origem. A origem deve ser configurada para gravar entradas localizadas ou para gravar cadeias de caracteres diretas. Se o aplicativo gravar entradas usando identificadores de recurso e valores de cadeia de caracteres, você deverá registrar duas fontes separadas. Por exemplo, configure uma fonte com arquivos de recurso e use essa origem WriteEvent no método para gravar entradas usando identificadores de recurso no log de eventos. Em seguida, crie uma fonte diferente sem arquivos de recurso e use essa origem no WriteEntry método para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.
Ao escrever eventos, você deve pelo menos especificar uma cadeia de caracteres de mensagem ou o identificador de recurso para uma cadeia de caracteres de mensagem. Outras propriedades de evento são opcionais. Exemplos de configurações de evento opcionais incluem o seguinte:
Você pode definir o EventLogEntryType ícone para especificar o ícone exibido pelo Visualizador de Eventos para a entrada.
Você pode especificar um identificador de categoria para o evento, se o aplicativo usar categorias para filtrar os eventos.
Você pode anexar dados binários à sua entrada de evento se quiser associar informações adicionais a um determinado evento.
Importante
O registro em log de eventos consome espaço em disco, tempo do processador e outros recursos do sistema. É importante registrar somente informações essenciais. Recomendamos que você coloque chamadas de log de eventos em um caminho de erro, em vez de no caminho do código principal, para que elas não afetem negativamente o desempenho.
Para obter uma lista de valores de propriedade iniciais de uma instância de EventLog, consulte o construtor EventLog.
Construtores
| Nome | Description |
|---|---|
| EventLog() |
Inicializa uma nova instância da classe EventLog. Não associa a instância a nenhum log. |
| EventLog(String, String, String) |
Inicializa uma nova instância da classe EventLog. Associa a instância a um log no computador especificado e cria ou atribui a origem especificada ao EventLog. |
| EventLog(String, String) |
Inicializa uma nova instância da classe EventLog. Associa a instância a um log no computador especificado. |
| EventLog(String) |
Inicializa uma nova instância da classe EventLog. Associa a instância a um log no computador local. |
Propriedades
| Nome | 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á no modo de design no momento. (Herdado de Component) |
| EnableRaisingEvents |
Obtém ou define um valor que indica se as notificações de EventLog evento são recebidas EntryWritten . |
| Entries |
Obtém o conteúdo do log de eventos. |
| Events |
Obtém a lista de manipuladores de eventos anexados a isso Component. (Herdado de Component) |
| Log |
Obtém ou define o nome do log para o qual ler ou gravar. |
| LogDisplayName |
Obtém o nome amigável do log de eventos. |
| MachineName |
Obtém ou define o nome do computador no qual ler ou gravar eventos. |
| MaximumKilobytes |
Obtém ou define o tamanho máximo do log de eventos em quilobytes. |
| MinimumRetentionDays |
Esta propriedade está obsoleta. |
| OverflowAction |
Obtém o comportamento configurado para armazenar novas entradas quando o log de eventos atinge o tamanho máximo do arquivo de log. |
| Site |
Obtém ou define o ISiteComponent. (Herdado de Component) |
| Source |
Obtém ou define o nome de origem a ser registrado e usado ao gravar no log de eventos. |
| SynchronizingObject |
Obtém ou define o objeto usado para realizar marshaling das chamadas do manipulador de eventos emitidas como resultado de um EventLog evento escrito de entrada. |
Métodos
| Nome | Description |
|---|---|
| BeginInit() |
Inicia a inicialização de um EventLog usado em um formulário ou usado por outro componente. A inicialização ocorre em runtime. |
| Clear() |
Remove todas as entradas do log de eventos. |
| Close() |
Fecha o log de eventos e libera identificadores de leitura e gravação. |
| CreateEventSource(EventSourceCreationData) |
Estabelece uma fonte de evento válida para gravar mensagens de evento localizadas usando as propriedades de configuração especificadas para a origem do evento e o log de eventos correspondente. |
| CreateEventSource(String, String, String) |
Obsoleto.
Obsoleto.
Obsoleto.
Estabelece o nome de origem especificado como uma fonte de evento válida para gravar entradas em um log no computador especificado. Esse método também pode ser usado para criar um novo log personalizado no computador especificado. |
| CreateEventSource(String, String) |
Estabelece o nome de origem especificado como uma fonte de evento válida para gravar entradas em um log no computador local. Esse método também pode criar um novo log personalizado no computador local. |
| CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Delete(String, String) |
Remove um log de eventos do computador especificado. |
| Delete(String) |
Remove um log de eventos do computador local. |
| DeleteEventSource(String, String) |
Remove o registro de origem do evento do aplicativo do computador especificado. |
| DeleteEventSource(String) |
Remove o registro de origem do evento do log de eventos do computador local. |
| Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo EventLoge, opcionalmente, libera os recursos gerenciados. |
| EndInit() |
Termina a inicialização de um EventLog usado em um formulário ou por outro componente. A inicialização ocorre em runtime. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Exists(String, String) |
Determina se o log existe no computador especificado. |
| Exists(String) |
Determina se o log existe no computador local. |
| GetEventLogs() |
Pesquisa todos os logs de eventos no computador local e cria uma matriz de EventLog objetos que contêm a lista. |
| GetEventLogs(String) |
Pesquisa todos os logs de eventos no computador fornecido e cria uma matriz de EventLog objetos que contêm a lista. |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou por sua Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância. (Herdado de MarshalByRefObject) |
| LogNameFromSourceName(String, String) |
Obtém o nome do log no qual a origem especificada está registrada. |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (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 gravar novas entradas quando o log de eventos atinge seu tamanho máximo de arquivo. |
| RegisterDisplayName(String, Int64) |
Especifica o nome localizado do log de eventos, que é exibido no Visualizador de Eventos do servidor. |
| SourceExists(String, String) |
Determina se uma fonte de evento está registrada em um computador especificado. |
| SourceExists(String) |
Determina se uma fonte de evento está registrada no computador local. |
| ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
| WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[]) |
Grava uma entrada com o texto da mensagem, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos e acrescenta dados binários à mensagem. |
| WriteEntry(String, EventLogEntryType, Int32, Int16) |
Grava uma entrada com o texto da mensagem, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos. |
| WriteEntry(String, EventLogEntryType, Int32) |
Grava uma entrada com o texto da mensagem e o identificador de evento definido pelo aplicativo no log de eventos. |
| WriteEntry(String, EventLogEntryType) |
Grava um erro, aviso, informações, auditoria de êxito ou entrada de auditoria de falha com o texto da mensagem especificado no log de eventos. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[]) |
Grava uma entrada com o texto da mensagem, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos (usando a fonte de evento registrada especificada) e acrescenta dados binários à mensagem. |
| WriteEntry(String, String, EventLogEntryType, Int32, Int16) |
Grava uma entrada com o texto da mensagem, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos, usando a origem do evento registrada especificada. Pode |
| WriteEntry(String, String, EventLogEntryType, Int32) |
Grava uma entrada com o texto da mensagem e o identificador de evento definido pelo aplicativo no log de eventos, usando a origem do evento registrada especificada. |
| WriteEntry(String, String, EventLogEntryType) |
Grava um erro, aviso, informações, auditoria de êxito ou entrada de auditoria de falha com o texto da mensagem especificado no log de eventos, usando a fonte de evento registrada especificada. |
| WriteEntry(String, String) |
Grava uma entrada de tipo de informação com o texto da mensagem fornecido no log de eventos, usando a fonte de evento registrada especificada. |
| WriteEntry(String) |
Grava uma entrada de tipo de informação, com o texto da mensagem fornecido, no log de eventos. |
| WriteEvent(EventInstance, Byte[], Object[]) |
Grava uma entrada de log de eventos com os dados de evento, cadeias de caracteres de substituição de mensagem e dados binários associados. |
| WriteEvent(EventInstance, Object[]) |
Grava uma entrada localizada no log de eventos. |
| WriteEvent(String, EventInstance, Byte[], Object[]) |
Grava uma entrada de log de eventos com os dados de evento especificados, cadeias de caracteres de substituição de mensagens e dados binários associados e usando a fonte de evento registrada especificada. |
| WriteEvent(String, EventInstance, Object[]) |
Grava uma entrada de log de eventos com os dados de evento e as cadeias de caracteres de substituição de mensagem fornecidas, usando a fonte de evento registrada especificada. |
Eventos
| Nome | Description |
|---|---|
| Disposed |
Ocorre quando o componente é descartado por uma chamada para o Dispose() método. (Herdado de Component) |
| EntryWritten |
Ocorre quando uma entrada é gravada em um log de eventos no computador local. |