Compartilhar via


EventLog Classe

Definição

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 ela ainda não existir e grava uma entrada no log de eventos MyNewLog.

Observação

A partir do Windows Vista, você deve executar esse aplicativo como administrador.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int 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( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
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 interface IDisposable. Quando você terminar de usar o tipo, deverá descartá-lo direta ou indiretamente. 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 (em Visual Basic). Saiba mais na seção "Como usar um objeto que implementa IDisposable" no tópico da interface IDisposable.

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 de EventLog para 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 . EventLogrequer permissões para ações específicas EventLogPermission no .NET Framework 2.0 e versões posteriores ou confiança total no .NET Framework 1.0 e 1.1. Recomendamos que EventLogPermission não seja concedido a código parcialmente confiável. Você nunca deve passar nenhum objeto de log de eventos, incluindo EventLogEntryCollection objetos e EventLogEntry , para um código menos confiável. Por exemplo, criar um EventLog objeto, gravar 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 no 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 for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do 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 para o 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 ele 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 gravação 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 por 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 é gerado.

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 para 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 gravar 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 usará como padrão o log de aplicativos.

Observação

Não há nada para proteger um aplicativo de gravar como qualquer fonte registrada. Se um aplicativo receber Write permissão, ele poderá gravar eventos para qualquer fonte válida registrada no computador.

Use os WriteEvent métodos e WriteEntry 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.

Create a nova origem do 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 origem 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 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 de cadeia de caracteres reais. Consulte as EventLogInstaller classes e EventSourceCreationData para 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 WriteEntry no método para gravar cadeias de caracteres diretamente no log de eventos usando essa origem.

Ao gravar 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 para especificar o ícone que o Visualizador de Eventos exibe 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 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 main, para que elas não afetem negativamente o desempenho.

Para obter uma lista de valores de propriedade iniciais de uma instância do EventLog, consulte o EventLog construtor.

Construtores

EventLog()

Inicializa uma nova instância da classe EventLog. Não associe a instância a nenhum log.

EventLog(String)

Inicializa uma nova instância da classe EventLog. Associa a instância a log no computador local.

EventLog(String, String)

Inicializa uma nova instância da classe EventLog. Associa a instância a um log no computador especificado.

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 indicada para o EventLog.

Propriedades

CanRaiseEvents

Obtém um valor que indica se o componente pode acionar 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 o EventLog recebe notificações do evento EntryWritten.

Entries

Obtém o conteúdo do log de eventos.

Events

Obtém a lista de manipuladores de eventos que estão anexados a este Component.

(Herdado de Component)
Log

Obtém ou define o nome do log a ser lido ou gravado.

LogDisplayName

Obtém o nome amigável do log de eventos.

MachineName

Obtém ou define o nome do computador em que os eventos devem ser lidos ou gravados.

MaximumKilobytes

Obtém ou define o tamanho máximo do log de eventos em quilobytes.

MinimumRetentionDays

Obtém o número de dias para reter as entradas no log de eventos.

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 ISite do Component.

(Herdado de Component)
Source

Obtém ou define o nome da fonte 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 evento de gravação na entrada EventLog.

Métodos

BeginInit()

Começa a inicialização de um EventLog usado em um formulário ou 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 os identificadores de leitura e gravação.

CreateEventSource(EventSourceCreationData)

Estabelece uma origem do evento válido para a gravação de 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)

Estabelece o nome de origem especificado como uma origem 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.

CreateEventSource(String, String, String)
Obsoleto.
Obsoleto.
Obsoleto.

Estabelece o nome de origem especificado como uma origem de evento válida para gravar entradas em um log no computador especificado. Também é possível usar esse método para criar um novo log personalizado no computador especificado.

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)

Remove um log de eventos do computador local.

Delete(String, String)

Remove um log de eventos do computador especificado.

DeleteEventSource(String)

Remove o registro da origem do evento do log de eventos do computador local.

DeleteEventSource(String, String)

Remove o registro da fonte de eventos do aplicativo do computador especificado.

Dispose()

Libera todos os recursos usados pelo Component.

(Herdado de Component)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo EventLog e opcionalmente libera os recursos gerenciados.

EndInit()

Encerra 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)

Determina se o log existe no computador local.

Exists(String, String)

Determina se o log existe no computador especificado.

GetEventLogs()

Pesquisa todos os logs de eventos em um computador local e cria uma matriz de objetos EventLog que contêm a lista.

GetEventLogs(String)

Pesquisa todos os logs de eventos em determinado computador e cria uma matriz de objetos EventLog 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 ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetService(Type)

Retorna 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()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
LogNameFromSourceName(String, String)

Obtém o nome do log no qual a origem especificada é registrada.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

(Herdado de MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Altera o comportamento configurado para gravar novas entradas quando o log de eventos atinge o tamanho máximo do arquivo.

RegisterDisplayName(String, Int64)

Especifica o nome localizado do log de eventos, que é exibido no Visualizador de Eventos do servidor.

SourceExists(String)

Determina se um evento de origem foi registrado no computador local.

SourceExists(String, String)

Determina se uma origem do evento está registrada em um computador especificado.

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)

Grava uma entrada de tipo de informação, com o texto da mensagem fornecido, no log de eventos.

WriteEntry(String, EventLogEntryType)

Grava uma entrada de erro, aviso, informação, auditoria de êxito ou auditoria de falha com o texto da mensagem fornecido no log de eventos.

WriteEntry(String, EventLogEntryType, Int32)

Grava no log de eventos uma entrada com o texto da mensagem especificado e o identificador de evento definido pelo aplicativo.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Grava uma entrada com o texto da mensagem especificado, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos.

WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

Grava uma entrada com o texto da mensagem fornecido, o identificador de eventos definido pelo aplicativo e a categoria definida por aplicativo no log de eventos e anexa dados binários à mensagem.

WriteEntry(String, String)

Grava uma entrada de tipo de informação com o texto da mensagem especificado no log de eventos usando a origem do evento registrada especificada.

WriteEntry(String, String, EventLogEntryType)

Grava uma entrada de erro, aviso, informação, auditoria de êxito ou auditoria de falha com o texto da mensagem fornecido no log de eventos, usando a origem do evento registrado especificado.

WriteEntry(String, String, EventLogEntryType, Int32)

Grava uma entrada com o texto da mensagem especificado e o identificador de evento definido pelo aplicativo no log de eventos, usando a fonte de evento registrada especificada.

WriteEntry(String, String, EventLogEntryType, Int32, Int16)

Grava uma entrada com o texto da mensagem fornecido, o identificador de evento definido pelo aplicativo e a categoria definida pelo aplicativo no log de eventos, usando a fonte de evento registrada especificada. O category pode ser usado pelo Visualizador de Eventos para filtrar eventos no log.

WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[])

Grava uma entrada com o texto da mensagem fornecido, o identificador de eventos definido pelo aplicativo e a categoria definida por aplicativo no log de eventos (usando a fonte de evento registrada especificada) e anexa dados binários à mensagem.

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 os 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, cadeias de caracteres de substituição de mensagem e os dados binários associados e usando a origem do evento registrada especificada.

WriteEvent(String, EventInstance, Object[])

Grava uma entrada de log de eventos com os dados do evento e as cadeias de caracteres de substituição de mensagem, usando a origem de evento registrada especificada.

Eventos

Disposed

Ocorre quando o componente é disposto por uma chamada ao método Dispose().

(Herdado de Component)
EntryWritten

Ocorre quando uma entrada é gravada em um log de eventos no computador local.

Aplica-se a

Confira também