EventLog Classe

Definição

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 category pode ser usado pelo Visualizador de Eventos para filtrar eventos no registo.

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.

Aplica-se a

Ver também