Aunque hace poco tiempo que su autor, nuestro compañero Sebikul, creó este componente, algunos desconocíais su existencia y el modo de usarlo en nuestras aplicaciones.
La documentación y los ejemplos son escuetos, así que voy a explicar brevemente su uso y sus grandes posibilidades de uso en cualquier aplicación seria para generar un log con mensajes de diferentes tipos, siguiendo el estándar RFC5454.
En primer lugar hay que activar el componente desde las propiedades del proyecto para poder usarlo.
Lo segundo que haremos será crear una instancia de la clase Logger. Si tenemos previsto usar mensajes de log en toda la aplicación, lo mejor es crear una instancia pública para tener acceso desde cualquier parte de la aplicación, Podemos crear cuantas queramos, ya sea desde un módulo o un formulario, pero por supuesto hay que inicializarla antes de poder usarla. Esto lo haremos por ejemplo en el evento _new() o en el form open de nuestro formulario principal:
Hemos creado una variable pública de tipo Logger. En el evento form_open, instanciamos una nueva clase pasando dos parámetros: el primero es el nivel de logueo que queremos registrar y el segundo parámetro es opcional. Si no se lo pasamos, los mensajes de log aparecerán en consola, pero si especificamos una ruta a un fichero, se guardarán los mensajes de log automáticamente en dicho fichero. El fichero una vez creado la primera vez, es persistente, es decir, no se borra su contenido. Si queremos inicializar el fichero al comienzo de la aplicación, tendremos que hacerlo nosotros mismos.
En cualquier parte de nuestra aplicación podemos usar ahora la sentencia:
mylogger("Mensaje de error o aviso", Nivel-de-error)
Hay cinco niveles de logueo que son Critical, Error, Warning, Info y Debug en orden descendiente por importancia. El nivel que declaremos en el primer parámetro de la clase Logger será el que sirva de corte hacia abajo. Es decir, si seleccionamos Logger.Warning, todas las ocurrencias que tengamos declaradas en el programa como Debug o Info, no serán logueadas, pero si lo serán Warning, Error y Critical. De esta forma, podemos crear los mecanismos adecuados para que el usuario pueda escoger un nivel de logueo específico, ya sea para depuración de errores o para trazar los pasos del programa.
Con un ejemplo práctico, lo veremos más claramente:
Public mylogger As Logger
Public Sub Form_Open()
' nivel mínimo de logueo y salida a fichero
mylogger = New Logger(Logger.Warning)
End
Public Sub Button1_Click()
Dim nr As Integer
mylogger("test warning", Logger.Warning)
' no se loguea porque info está por debajo de warning
mylogger("test info", Logger.Info)
nr = 10 / 0
Catch
mylogger(Error.Text, Logger.Error)
End
Public Sub Form_Open()
' nivel mínimo de logueo y salida a fichero
mylogger = New Logger(Logger.Warning)
End
Public Sub Button1_Click()
Dim nr As Integer
mylogger("test warning", Logger.Warning)
' no se loguea porque info está por debajo de warning
mylogger("test info", Logger.Info)
nr = 10 / 0
Catch
mylogger(Error.Text, Logger.Error)
End
El código es autoexplicativo, sólo añadir que el formato por defecto es algo así:
[11/27/2013 23:32:22.191] [WARNING] [FMain.Button1_Click.16] test warning
[11/27/2013 23:32:22.191] [ERROR] [FMain.Button1_Click.24] Division by zero
[11/27/2013 23:32:22.191] [ERROR] [FMain.Button1_Click.24] Division by zero
Pero si deseamos cambiarlo, el componente también lo permite. Sólo hay que especificarlo usando el método Format de la clase Logger mediante una cadena de tokens que representan el mensaje, la hora, el método desde donde se invoca y muchos más, convenientemente explicados en la ayuda del componente:
http://www.gambaswiki.org/wiki/comp/gb.logging
Espero que sea de utilidad, para mí es de una gran ayuda y desde aquí quiero agradecer a Sebikul su trabajo.
Saludos