miércoles, 6 de enero de 2010

.NET Log en el Visor de Sucesos (Event Viewer)

En este post quiero mostrarte como utilizar el visor de sucesos como para persistir los eventos de tu aplicación.

El soporte de Microsoft dice lo siguiente:

"Los registros de sucesos proporcionan un medio estándar y centralizado para que las aplicaciones graben sucesos (eventos) de software y hardware importantes. Windows suministra una interfaz de usuario estándar para ver los registros: el Visor de sucesos" (aquí)

No quiero contradecirlos pero, en mi opinión, no tendríamos que abusar del uso del registro de sucesos por las siguientes razones:

  1. El registro de sucesos se llena. A mí ya me ha ocurrido en una máquina XP, entiendo que en un servidor el tamaño será mucho más grande.
  2. La explotación de estadísticas. Es habitual querer obtener estadísticas de los eventos que provocan nuestras aplicaciones.
  3. Mantenimiento de aplicaciones. El Visor de Sucesos muestra los eventos escritos por todas las aplicaciones del sistema, por tanto es más difícil encontrar el evento que buscamos.

Mi recomendación sería usar una base de datos para persistir nuestros logs del tipo que sean (auditoría, errores, informativos…), para poder explotar estos datos. Aún así, los eventos informados en el registro de sucesos dan un aspecto más profesional a nuestras aplicaciones, pudiendo seleccionar ciertos eventos de nuestra aplicación que deberíamos persistir en el registro de eventos.

El uso es sencillo lo podéis ver aquí.

Sólo tienes que crear un nuevo proyecto usando la plantilla de "Aplicación del Consola" y tener el código siguiente en tu clase Main:


 

static
void Main(string[] args)

{

string sSource;

string sLog;

string sEvent;


 

sSource = "Nombre de mi aplicación";

sLog = "Application";

sEvent = "Mensaje de nuestro evento";

//Se añade nuestra aplicación como generadora de eventos si esta no existe

if (!EventLog.SourceExists(sSource))

{

EventLog.CreateEventSource(sSource, sLog);

}


 

//Se escribe una Advertencia/Warning

EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Warning, 230);

//Se escribe un error

EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Error, 231);

//Se escribe un error

EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.FailureAudit, 232);

//Se escribe un error

EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Information, 233);

//Se escribe un er

EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.SuccessAudit, 234);

}


 

Una vez ejecutes la aplicación consulta el visor de sucesos de tu máquina: Inicio > Ejecutar >eventvwr. Este tendrá el aspecto que puedes ver en la imagen siguiente:


 



 

Espero que te sea útil este post y si tienes alguna duda realiza un comentario.

1 comentario:

  1. Cuando tengo la aplicaion montada en un servidor remoto, como puedo acceder al visor de sucesos?

    ResponderEliminar