Compartir por


EventLog Clase

Definición

Proporciona interacción con los registros de eventos de 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
Herencia
Implementaciones

Ejemplos

En el ejemplo siguiente se crea el origen del evento MySource si aún no existe y se escribe una entrada en el registro de eventos MyNewLog.

Nota:

Debe ejecutar esta aplicación 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

Comentarios

EventLog permite acceder a los registros de eventos de Windows o personalizarlos, que registran información sobre eventos importantes de hardware o software. Con EventLog, puede leer de registros existentes, escribir entradas en registros, crear o eliminar orígenes de eventos, eliminar registros y responder a entradas de registro. También puede crear registros al crear un origen de eventos.

Importante

Este tipo implementa la IDisposable interfaz . Cuando haya terminado de utilizar el tipo, debe desecharlo directa o indirectamente. Para eliminar el tipo directamente, llame a su método Dispose en un bloque try/catch. Para eliminarlo indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para obtener más información, vea la sección "Using an Object that Implements IDisposable" (Usar un objeto que implementa IDisposable) en el tema de interfaz IDisposable .

Además de proporcionar acceso a registros de eventos individuales y sus entradas, la EventLog clase le permite acceder a la colección de todos los registros de eventos. Puede usar los static miembros de EventLog para eliminar registros, obtener listas de registros, crear o eliminar un origen, o determinar si un equipo ya contiene un origen determinado.

Hay tres registros de eventos predeterminados: Aplicación, Sistema y Seguridad. Un registro de seguridad es de solo lectura. Otras aplicaciones y servicios que instale, como Active Directory, pueden tener registros de eventos adicionales.

Hay consideraciones de seguridad al usar la EventLog clase . EventLog requiere EventLogPermission permisos para acciones específicas. Se recomienda no EventLogPermission concederse al código de confianza parcial. Nunca debe pasar ningún objeto de registro de eventos, incluidos EventLogEntryCollection los objetos y EventLogEntry , al código de menos confianza. Por ejemplo, crear un EventLog objeto, escribir una entrada y pasar el EventLog objeto a código de confianza parcial puede crear un problema de seguridad, ya que la capacidad de leer y escribir en el registro de eventos permite que el código realice acciones como emitir mensajes de registro de eventos en el nombre de otra aplicación.

A partir de Windows Vista, el Control de cuentas de usuario (UAC) determina las credenciales de un usuario. Si es miembro del grupo Administradores integrados, se le asignan dos tokens de acceso en tiempo de ejecución: un token de acceso de usuario estándar y un token de acceso de administrador. De forma predeterminada, está en el rol de usuario estándar. Para ejecutar el código que tiene acceso al registro de seguridad, primero debe elevar las credenciales del usuario estándar al administrador. Para ello, abra el menú contextual de la aplicación (si usa un mouse, haga clic con el botón derecho en el icono de la aplicación) e indique que desea ejecutar como administrador.

Puede usar EventLog para crear registros de eventos personalizados que puede ver a través del Visor de eventos del servidor. Use el RegisterDisplayName método para mostrar un nombre localizado para el registro de eventos en el Visor de eventos. Use el ModifyOverflowPolicy método para configurar el comportamiento del registro de eventos cuando alcance su tamaño máximo de registro.

Para leer desde un registro de eventos, especifique el nombre de registro (Log propiedad) y el nombre del equipo del servidor (MachineName propiedad para el registro de eventos. Si no especifica el nombre del equipo del servidor, se asume el equipo local, ".". No es necesario especificar el origen del evento (Source propiedad), ya que solo se requiere un origen para escribir en los registros. La Entries propiedad se rellena automáticamente con la lista de entradas del registro de eventos.

Para escribir en un registro de eventos, especifique o cree un origen de eventos (Source propiedad). Debe tener credenciales administrativas en el equipo para crear un nuevo origen de eventos. El origen del evento registra la aplicación con el registro de eventos como un origen válido de entradas. Puede usar el origen del evento para escribir solo en un registro cada vez. La Source propiedad puede ser cualquier cadena aleatoria, pero el nombre debe ser distinto de otros orígenes del equipo. El origen del evento suele ser el nombre de la aplicación u otra cadena de identificación. Al intentar crear un valor duplicado Source , se produce una excepción. Sin embargo, un único registro de eventos se puede asociar a varios orígenes.

Si el origen de eventos del registro de eventos asociado a la EventLog instancia no existe, se crea un nuevo origen de eventos. Para crear un origen de eventos en Windows Vista y versiones posteriores o Windows Server 2003, debe tener credenciales administrativas.

Este requisito se debe a que todos los registros de eventos, incluidos los registros de seguridad, deben buscarse para determinar si el origen del evento es único. A partir de Windows Vista, los usuarios no tienen permiso para acceder al registro de seguridad; por lo tanto, se produce una SecurityException excepción .

Importante

La creación o eliminación de un origen de eventos requiere la sincronización del código subyacente mediante una exclusión mutua con nombre. Si una aplicación con privilegios elevados bloquea la exclusión mutua con nombre, al intentar crear o eliminar un origen de eventos, la aplicación dejará de responder hasta que se libere el bloqueo. Para ayudar a evitar este problema, nunca conceda UnmanagedCode permiso a código que no es de confianza. Además, UnmanagedCode el permiso permite que se omitan otros permisos y solo se les debe conceder código de alta confianza.

Las aplicaciones y los servicios deben escribir en el registro de aplicaciones o en un registro personalizado. Los controladores de dispositivo deben escribir en el registro del sistema. Si no establece explícitamente la Log propiedad , el registro de eventos tiene como valor predeterminado el registro de aplicaciones.

Nota:

No hay nada que proteja a una aplicación de escribir como origen registrado. Si se concede Write permiso a una aplicación, puede escribir eventos para cualquier origen válido registrado en el equipo.

Use los WriteEvent métodos y WriteEntry para escribir eventos en un registro de eventos. Debe especificar un origen de eventos para escribir eventos; Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen.

Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante un EventLogInstaller objeto o el CreateEventSource método . Debe tener credenciales administrativas en el equipo para crear un nuevo origen de eventos.

Cada origen solo puede escribir en un registro de eventos a la vez; Sin embargo, la aplicación puede usar varios orígenes para escribir en varios registros de eventos. Por ejemplo, la aplicación podría requerir varios orígenes configurados para distintos registros de eventos o archivos de recursos diferentes. Para cambiar los detalles de configuración de un origen existente, debe eliminar el origen y, a continuación, crearlo con la nueva configuración. Si otras aplicaciones o componentes usan el origen existente, cree un nuevo origen con la configuración actualizada en lugar de eliminar el origen existente.

Puede registrar el origen del evento con recursos localizados para la categoría de eventos y las cadenas de mensaje. La aplicación puede escribir entradas del registro de eventos mediante identificadores de recursos en lugar de especificar los valores de cadena reales. Consulte las EventLogInstaller clases y EventSourceCreationData para obtener más información sobre cómo configurar el origen con archivos de recursos.

Si la aplicación escribe valores de cadena directamente en el registro de eventos, no es necesario establecer las propiedades del archivo de recursos para el origen. El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Si la aplicación escribe entradas con identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Al escribir eventos, debe especificar al menos una cadena de mensaje o el identificador de recurso de una cadena de mensaje. Otras propiedades de evento son opcionales. Entre los ejemplos de configuración de eventos opcionales se incluyen los siguientes:

  • Puede establecer para EventLogEntryType especificar el icono que muestra el Visor de eventos para la entrada.

  • Puede especificar un identificador de categoría para el evento, si la aplicación usa categorías para filtrar los eventos.

  • Puede adjuntar datos binarios a la entrada de eventos si desea asociar información adicional a un evento determinado.

Importante

El registro de eventos consume espacio en disco, tiempo de procesador y otros recursos del sistema. Es importante registrar solo la información esencial. Se recomienda colocar llamadas de registro de eventos en una ruta de acceso de error, en lugar de en la ruta de acceso de código principal, por lo que no afectan negativamente al rendimiento.

Para obtener una lista de valores de propiedad iniciales para una instancia de EventLog, vea el EventLog constructor .

Constructores

Nombre Description
EventLog()

Inicializa una nueva instancia de la clase EventLog. No asocia la instancia a ningún registro.

EventLog(String, String, String)

Inicializa una nueva instancia de la clase EventLog. Asocia la instancia a un registro en el equipo especificado y crea o asigna el origen especificado a EventLog.

EventLog(String, String)

Inicializa una nueva instancia de la clase EventLog. Asocia la instancia a un registro en el equipo especificado.

EventLog(String)

Inicializa una nueva instancia de la clase EventLog. Asocia la instancia a un registro en el equipo local.

Propiedades

Nombre Description
CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.

(Heredado de Component)
Container

Obtiene el IContainer objeto que contiene el Componentobjeto .

(Heredado de Component)
DesignMode

Obtiene un valor que indica si Component el objeto está actualmente en modo de diseño.

(Heredado de Component)
EnableRaisingEvents

Obtiene o establece un valor que indica si recibe EventLogEntryWritten notificaciones de eventos.

Entries

Obtiene el contenido del registro de eventos.

Events

Obtiene la lista de controladores de eventos que están asociados a este Componentobjeto .

(Heredado de Component)
Log

Obtiene o establece el nombre del registro en el que se va a leer o escribir.

LogDisplayName

Obtiene el nombre descriptivo del registro de eventos.

MachineName

Obtiene o establece el nombre del equipo en el que se van a leer o escribir eventos.

MaximumKilobytes

Obtiene o establece el tamaño máximo del registro de eventos en kilobytes.

MinimumRetentionDays

Esta propiedad está obsoleta.

OverflowAction

Obtiene el comportamiento configurado para almacenar nuevas entradas cuando el registro de eventos alcanza su tamaño máximo de archivo de registro.

Site

Obtiene o establece el ISite objeto de .Component

(Heredado de Component)
Source

Obtiene o establece el nombre de origen que se va a registrar y usar al escribir en el registro de eventos.

SynchronizingObject

Obtiene o establece el objeto utilizado para serializar las llamadas del controlador de eventos emitidas como resultado de un EventLog evento escrito de entrada.

Métodos

Nombre Description
BeginInit()

Comienza la inicialización de un EventLog objeto usado en un formulario o utilizado por otro componente. La inicialización se produce en tiempo de ejecución.

Clear()

Quita todas las entradas del registro de eventos.

Close()

Cierra el registro de eventos y libera identificadores de lectura y escritura.

CreateEventSource(EventSourceCreationData)

Establece un origen de eventos válido para escribir mensajes de evento localizados mediante las propiedades de configuración especificadas para el origen del evento y el registro de eventos correspondiente.

CreateEventSource(String, String, String)
Obsoletos.
Obsoletos.
Obsoletos.

Establece el nombre de origen especificado como un origen de eventos válido para escribir entradas en un registro en el equipo especificado. Este método también se puede usar para crear un nuevo registro personalizado en el equipo especificado.

CreateEventSource(String, String)

Establece el nombre de origen especificado como un origen de eventos válido para escribir entradas en un registro en el equipo local. Este método también puede crear un nuevo registro personalizado en el equipo local.

CreateObjRef(Type)

Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Delete(String, String)

Quita un registro de eventos del equipo especificado.

Delete(String)

Quita un registro de eventos del equipo local.

DeleteEventSource(String, String)

Quita el registro de origen de eventos de la aplicación del equipo especificado.

DeleteEventSource(String)

Quita el registro de origen de eventos del registro de eventos del equipo local.

Dispose()

Libera todos los recursos usados por .Component

(Heredado de Component)
Dispose(Boolean)

Libera los recursos no administrados usados por EventLogy, opcionalmente, libera los recursos administrados.

EndInit()

Finaliza la inicialización de un EventLog objeto utilizado en un formulario o por otro componente. La inicialización se produce en tiempo de ejecución.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Exists(String, String)

Determina si el registro existe en el equipo especificado.

Exists(String)

Determina si el registro existe en el equipo local.

GetEventLogs()

Busca todos los registros de eventos en el equipo local y crea una matriz de EventLog objetos que contienen la lista.

GetEventLogs(String)

Busca todos los registros de eventos en el equipo especificado y crea una matriz de EventLog objetos que contienen la lista.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetService(Type)

Devuelve un objeto que representa un servicio proporcionado por Component o por su Container.

(Heredado de Component)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
LogNameFromSourceName(String, String)

Obtiene el nombre del registro al que está registrado el origen especificado.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(Heredado de MarshalByRefObject)
ModifyOverflowPolicy(OverflowAction, Int32)

Cambia el comportamiento configurado para escribir entradas nuevas cuando el registro de eventos alcanza su tamaño máximo de archivo.

RegisterDisplayName(String, Int64)

Especifica el nombre localizado del registro de eventos, que se muestra en el Visor de eventos del servidor.

SourceExists(String, String)

Determina si un origen de eventos está registrado en un equipo especificado.

SourceExists(String)

Determina si un origen de eventos está registrado en el equipo local.

ToString()

Devuelve un String objeto que contiene el nombre de Component, si existe. Este método no se debe invalidar.

(Heredado de Component)
WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[])

Escribe una entrada con el texto del mensaje, el identificador de eventos definido por la aplicación y la categoría definida por la aplicación en el registro de eventos y anexa datos binarios al mensaje.

WriteEntry(String, EventLogEntryType, Int32, Int16)

Escribe una entrada con el texto del mensaje, el identificador de evento definido por la aplicación y la categoría definida por la aplicación en el registro de eventos.

WriteEntry(String, EventLogEntryType, Int32)

Escribe una entrada con el texto del mensaje especificado y el identificador de evento definido por la aplicación en el registro de eventos.

WriteEntry(String, EventLogEntryType)

Escribe una entrada de error, advertencia, información, auditoría correcta o auditoría de error con el texto del mensaje especificado en el registro de eventos.

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

Escribe una entrada con el texto del mensaje especificado, el identificador de evento definido por la aplicación y la categoría definida por la aplicación en el registro de eventos (mediante el origen de eventos registrado especificado) y anexa datos binarios al mensaje.

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

Escribe una entrada con el texto del mensaje, el identificador de evento definido por la aplicación y la categoría definida por la aplicación en el registro de eventos, mediante el origen de eventos registrado especificado. category El Visor de eventos puede usar para filtrar eventos en el registro.

WriteEntry(String, String, EventLogEntryType, Int32)

Escribe una entrada con el texto del mensaje y el identificador de evento definido por la aplicación especificados en el registro de eventos mediante el origen de eventos registrado especificado.

WriteEntry(String, String, EventLogEntryType)

Escribe una entrada de error, advertencia, información, auditoría correcta o auditoría de error con el texto del mensaje especificado en el registro de eventos mediante el origen de eventos registrado especificado.

WriteEntry(String, String)

Escribe una entrada de tipo de información con el texto del mensaje especificado en el registro de eventos mediante el origen de eventos registrado especificado.

WriteEntry(String)

Escribe una entrada de tipo de información, con el texto del mensaje especificado, en el registro de eventos.

WriteEvent(EventInstance, Byte[], Object[])

Escribe una entrada del registro de eventos con los datos de evento, las cadenas de reemplazo de mensajes y los datos binarios asociados.

WriteEvent(EventInstance, Object[])

Escribe una entrada localizada en el registro de eventos.

WriteEvent(String, EventInstance, Byte[], Object[])

Escribe una entrada del registro de eventos con los datos de evento especificados, las cadenas de reemplazo de mensajes y los datos binarios asociados, y utilizando el origen de eventos registrado especificado.

WriteEvent(String, EventInstance, Object[])

Escribe una entrada del registro de eventos con los datos de evento y las cadenas de reemplazo de mensajes especificados mediante el origen de eventos registrado especificado.

Eventos

Nombre Description
Disposed

Se produce cuando el componente se elimina mediante una llamada al Dispose() método .

(Heredado de Component)
EntryWritten

Se produce cuando se escribe una entrada en un registro de eventos en el equipo local.

Se aplica a

Consulte también