EventLog Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
A partir de Windows Vista, debe ejecutar esta aplicación 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
Comentarios
EventLog permite acceder o personalizar los registros de eventos de Windows, que registran información sobre eventos importantes de software o hardware. Con EventLog, puede leer de los registros existentes, escribir entradas en los registros, crear o eliminar orígenes de eventos, eliminar registros y responder a entradas de registro. También puede crear nuevos registros al crear un origen de eventos.
Importante
Este tipo implementa la interfaz IDisposable. 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 deshacerse de él indirectamente, use una construcción de lenguaje como using
(en C#) o Using
(en Visual Basic). Para más información, vea la sección "Uso de objetos que implementan IDisposable" en el tema de la 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 en .NET Framework 2.0 y versiones posteriores, o una plena confianza en .NET Framework 1.0 y 1.1. 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 , a código menos de 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 asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede 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 de eventos (Source propiedad ), porque 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 de eventos 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 al 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 confianza alta.
Las aplicaciones y los servicios deben escribir en el registro de aplicación 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 para proteger una aplicación de escritura como cualquier 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.
Create 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 mediante 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 para 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 el Visor de eventos muestra 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 del evento 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 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 del 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
EventLog() |
Inicializa una nueva instancia de la clase EventLog. No asocia la instancia a ningún registro. |
EventLog(String) |
Inicializa una nueva instancia de la clase EventLog. Asocia la instancia a un registro del equipo local. |
EventLog(String, String) |
Inicializa una nueva instancia de la clase EventLog. Asocia la instancia a un registro en el equipo especificado. |
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. |
Propiedades
CanRaiseEvents |
Obtiene un valor que indica si el componente puede generar un evento. (Heredado de Component) |
Container |
Obtiene la interfaz IContainer que contiene la clase Component. (Heredado de Component) |
DesignMode |
Obtiene un valor que indica si Component está actualmente en modo de diseño. (Heredado de Component) |
EnableRaisingEvents |
Obtiene o establece un valor que indica si EventLog recibe notificaciones de eventos EntryWritten. |
Entries |
Obtiene el contenido del registro de eventos. |
Events |
Obtiene la lista de controladores de eventos asociados a Component. (Heredado de Component) |
Log |
Obtiene o establece el nombre del registro del que se lee o en el que se escribe. |
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 en el que se van a escribir los eventos. |
MaximumKilobytes |
Obtiene o establece el tamaño máximo del registro de eventos, en kilobytes. |
MinimumRetentionDays |
Obtiene el número de días que se deben conservar las entradas en el registro de eventos. |
OverflowAction |
Obtiene el comportamiento configurado para el almacenamiento de entradas nuevas cuando el registro de eventos haya alcanzado su tamaño máximo de archivo. |
Site |
Obtiene o establece ISite de Component. (Heredado de Component) |
Source |
Obtiene o establece el nombre de origen que se va a registrar y utilizar al escribir en el registro de eventos. |
SynchronizingObject |
Obtiene o establece el objeto utilizado para calcular las referencias de las llamadas del controlador de eventos emitidas como resultado de un evento escrito en una entrada de EventLog. |
Métodos
BeginInit() |
Comienza la inicialización de un objeto EventLog que se emplea en un formulario o que utiliza 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 los identificadores de lectura y escritura. |
CreateEventSource(EventSourceCreationData) |
Establece un origen de eventos válido para la escritura de mensajes de evento localizados, mediante las propiedades de configuración especificadas para el origen y el correspondiente registro de eventos. |
CreateEventSource(String, String) |
Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo local. Este método también puede crear un nuevo registro personalizado en el equipo local. |
CreateEventSource(String, String, String) |
Obsoletos.
Obsoletos.
Obsoletos.
Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo especificado. Este método puede utilizarse también para crear un nuevo registro personalizado en el equipo especificado. |
CreateObjRef(Type) |
Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
Delete(String) |
Quita un registro de eventos del equipo local. |
Delete(String, String) |
Quita un registro de eventos del equipo especificado. |
DeleteEventSource(String) |
Quita del registro de eventos del equipo local el registro del origen de eventos. |
DeleteEventSource(String, String) |
Quita del equipo especificado el registro del origen de eventos de la aplicación. |
Dispose() |
Libera todos los recursos que usa Component. (Heredado de Component) |
Dispose(Boolean) |
Libera los recursos no administrados utilizados por el objeto EventLog y, de forma opcional, libera los recursos administrados. |
EndInit() |
Termina la inicialización de EventLog utilizada en un formulario o empleada por otro componente. La inicialización se produce en tiempo de ejecución. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
Exists(String) |
Determina si el registro existe en el equipo local. |
Exists(String, String) |
Determina si el registro existe en el equipo especificado. |
GetEventLogs() |
Busca todos los registros de eventos en el equipo local y crea una matriz de objetos EventLog que contiene la lista. |
GetEventLogs(String) |
Busca todos los registros de eventos en el equipo dado y crea una matriz de objetos EventLog que contiene la lista. |
GetHashCode() |
Sirve como la 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 el servicio suministrado por Component o por 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 en el que se registra el origen especificado. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
MemberwiseClone(Boolean) |
Crea una copia superficial del objeto MarshalByRefObject actual. (Heredado de MarshalByRefObject) |
ModifyOverflowPolicy(OverflowAction, Int32) |
Cambia el comportamiento configurado para la escritura de 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 aparece en el Visor de eventos del servidor. |
SourceExists(String) |
Determina si un origen de eventos está registrado en el equipo local. |
SourceExists(String, String) |
Determina si un origen de eventos está registrado en un equipo especificado. |
ToString() |
Devuelve una String que contiene el nombre del Component, si existe. Este método no se debe invalidar. (Heredado de Component) |
WriteEntry(String) |
Escribe una entrada de tipo de información, con un texto de mensaje determinado, en el registro de eventos. |
WriteEntry(String, EventLogEntryType) |
Escribe en el registro de eventos una entrada de error, advertencia, información, auditoría correcta o auditoría incorrecta con el texto de mensaje dado. |
WriteEntry(String, EventLogEntryType, Int32) |
Escribe una entrada con el identificador de eventos definido por la aplicación y el texto de mensaje dado en el registro de eventos. |
WriteEntry(String, EventLogEntryType, Int32, Int16) |
Escribe en el registro de eventos una entrada con el texto de mensaje dado, el identificador de eventos definido por la aplicación y la categoría definida por la aplicación. |
WriteEntry(String, EventLogEntryType, Int32, Int16, Byte[]) |
Escribe en el registro de eventos una entrada con el texto de mensaje dado, el identificador de eventos definido por la aplicación y la categoría definida por la aplicación y anexa datos binarios al mensaje. |
WriteEntry(String, String) |
Escribe una entrada de tipo de información con un texto de mensaje determinado en el registro de eventos utilizando el origen de eventos registrado que se haya especificado. |
WriteEntry(String, String, EventLogEntryType) |
Escribe en el registro de eventos una entrada de error, advertencia, información, auditoría correcta o auditoría incorrecta con el texto de mensaje dado mediante el origen de eventos registrado especificado. |
WriteEntry(String, String, EventLogEntryType, Int32) |
Escribe en el registro de eventos una entrada con el texto de mensaje dado y el identificador de eventos definido por la aplicación mediante el origen de eventos registrado que se especifique. |
WriteEntry(String, String, EventLogEntryType, Int32, Int16) |
Escribe en el registro de eventos una entrada con el texto de mensaje dado, el identificador de eventos definido por la aplicación y la categoría definida por la aplicación mediante el origen de eventos registrado específico. El Visor de eventos puede usar el parámetro |
WriteEntry(String, String, EventLogEntryType, Int32, Int16, Byte[]) |
Escribe en el registro de eventos una entrada con el texto de mensaje dado, el identificador de eventos definido por la aplicación y la categoría definida por la aplicación (mediante el origen de eventos registrado especificado) y anexa datos binarios al mensaje. |
WriteEvent(EventInstance, Byte[], Object[]) |
Escribe una entrada de registro de eventos con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados. |
WriteEvent(EventInstance, Object[]) |
Escribe una entrada localizada en el registro de eventos. |
WriteEvent(String, EventInstance, Byte[], Object[]) |
Escribe una entrada de registro con los datos de evento dados, con cadenas de reemplazo de mensajes y con datos binarios asociados y, además, utiliza el origen de eventos registrado que se especifica. |
WriteEvent(String, EventInstance, Object[]) |
Escribe una entrada de registro de eventos con las cadenas de reemplazo de mensaje y los datos de evento proporcionados, para lo que utiliza el origen de eventos registrado. |
Eventos
Disposed |
Tiene lugar cuando una llamada elimina el componente mediante una llamada al método Dispose(). (Heredado de Component) |
EntryWritten |
Se produce cuando se escribe una entrada en un registro de eventos en el equipo local. |