Mostrando entradas con la etiqueta System.Diagnostics. Mostrar todas las entradas
Mostrando entradas con la etiqueta System.Diagnostics. Mostrar todas las entradas

19 nov 2013

Trace, la herramienta versátil para crear logs

Algo que siempre necesitamos es llevar líneas de log para saber qué está ocurriendo con nuestras aplicaciones y esto se vuelve prácticamente indispensable al trabajar con Windows Services o Servicios de Windows ya que al no tener UI se hace muy difícil saber qué ocurre...

Afortunadamente encontramos la clase Trace en el namespace System.Diagnostics, la cual nos permite de manera muy sencilla ir dejando líneas de log en nuestro código, veamos un ejemplo simple:


   Public Sub New()
      System.Diagnostics.Trace.WriteLine("Inicio de constructor")
      ' Proceso de datos
      System.Diagnostics.Trace.WriteLine("Fin de constructor")
   End Sub

Entonces para el propósito de este post lo que nos interesa es básicamente la capacidad de escribir de esta clase, para lo cual utilizaremos 2 métodos: Write() y WriteLine() cuya principal diferencia, como lo indica su nombre, es que uno escribe y el otro escribe y termina la línea.

Entonces ya sabemos como utilizar esta herramienta para escribir líneas de log, nos resta leer nuestro log, para lo cual Visual Studio cuenta con una ventana llamada Output o Salida (CTRL + W + O) en la cual se van imprimiendo las líneas de nuestro log... impecable si estamos trabajando en nuestro entorno de desarrollo, pero si debemos leer nuestro log desde una aplicación ya compilada (en modo Debug) podemos utilizar la herramienta Debug View que nos permite tener una ventana con nuestro log en la cual podremos usar filtros, resaltado de colores, etc.


29 abr 2009

Como dejar un log en el Visor de Sucesos de Windows


Todos hemos visto el Visor de Sucesos de Windows, y a veces es una buena alternativa para guardar registros de nuestras aplicaciones, ya que nos evita el tener que definirnos una estructura de logs.

Suele ser muy útil cuando desarrollamos un Servicio de Windows y queremos llevar registro de excepciones o ciertas situaciones... por eso el ejemplo de hoy se trata de crear un log para nuestra aplicación utilizando la clase EventLog del Namespace System.Diagnostics.


Public Sub EscribirEventLog(ByVal Origen As String, ByVal Mensaje As String, ByVal Equipo As String, ByVal TipoDeEntrada As EventTipoDeEntrada)
If Not EventLog.SourceExists(Origen, Equipo) Then ' Si el origen no existe lo creamos
EventLog.CreateEventSource(Origen, "GNSys", Equipo)
End If

Dim eLog As New EventLog("GNSys", Equipo, Origen) ' Instanciamos la clase EventLog
eLog.WriteEntry(Mensaje, TipoDeEntrada, GetSafeShort(111), GetSafeShort(1)) ' Escribimos la entrada
End Sub




En el código anterior, (que por cierto es muy sencillo), en la línea que escribe nuestra entrada de log hay datos que deberemos definir en función de nuestras necesidades, veamos la línea y cómo está formada:

eLog.WriteEntry([Event], LogEntryType, GetSafeShort(111), GetSafeShort(1))

La firma del método WriteEntry es la siguiente:

Public Shared Sub WriteEntry(ByVal source As String, ByVal message As String, ByVal type As System.Diagnostics.EventLogEntryType, ByVal eventID As Integer, ByVal category As Short)

Viendo la siguiente imágen se puede ver qué es cada campo.

Detalles de una entrada en el Visor de Sucesos