Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Componente gb.logging
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Componente gb.logging 
 
Hola

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:

Public mylogger As Logger

Public Sub Form_Open()
    ' nivel mínimo de logueo y salida a fichero opcional
    mylogger = New Logger(Logger.Warning, User.Home &/ "Logger.txt")

End


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


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


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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
última edición por jguardon el Miercoles, 27 Julio 2016, 19:52; editado 1 vez 
Editado por jguardon, Miercoles, 27 Julio 2016, 19:52: Corregido enlace a documentación del componente a gambaswiki
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
jguardon:

Muy útil ese componente, sobre todo para cuando otras personas que usen un programa, les sea más facil pasarte información del error que se ha producido y en que parte del código.

Citar:
mylogger("test warning", Logger.Warning)

Ademas, le puedes añadir una cadena de texto para más información ( por ejemplo, informar de valores de variables en los que estaba trabajando cuando se produjo el error).

Gracias Sebikul por hacerlo y jguardon por explicarlo  

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
No lo conocía. Mola.
Yo uso algo parecido hecho por mí, pero que guarda los registros en una tabla de la base de datos.
Estudiaré el de Sebas cuando tenga un ratito. Eso de los niveles, como que mola.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
Es muy agradable saber que mi trabajo es de utilidad para otros!!
En un principio quería hacer que el componente cree una clase estática, al igual que Settings. De esta forma sólo haría falta ejecutar Logger(...) Pero por alguna razón está modalidad estaba tirando un error.

Shordi: dime como esta implementado tu sistema de logueo. Quizás pueda agregar una modalidad que redireccione la salida a una base de datos y guarde una lista de campos en columnas configurables, quizás hasta con un formato distinto en cada una. La idea es muy buena!
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
Sebas,

Te adjunto una pequeña versión simplificada de lo que uso (la original hace algunas cosas no traspasables a algo de propósito general).

Para el ejemplo uso una base sqlite que se crea en la carpeta home. (La original usa mysql, pero el código es el mismo, salvo en la creación de la base y la tabla)

Tiene dos propiedades a grabar en la tabla:

  -tipo, que es una cadena que indica qué tipo de operación se logea ("Añade registro en tabla fulana", "Entra al sistema", etc. etc. y
  -datos, que es un Variant que admite cadenas, números, fechas y Results.
    Si se le pasa un result, lo convierte en una cadena que contiene: nombre de campo+: +valor del campo+ salto de línea.

    Además se graban en la tabla el nick del usuario (para el ejemplo lo he deshabilitado) y la fecha y hora del momento.

No sé si te sirve de algo, pero es lo que uso y, de momento, me vale, bien administrado por la aplicación te permite luego buscar cualquier evento que haya ocurrido filtrando por usuario, tipo de operación, contenido de la operación, etc..

Saludos.

Logger.tar.gz
Descripción:  
Descargar
Nombre del archivo: Logger.tar.gz
Tamaño: 5.96 KB
Descargado: 38 veces
Logger.tar.gz
Descripción:  
Descargar
Nombre del archivo: Logger.tar.gz
Tamaño: 5.96 KB
Descargado: 38 veces
Logger.tar.gz
Descripción:  
Descargar
Nombre del archivo: Logger.tar.gz
Tamaño: 5.96 KB
Descargado: 38 veces

 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
buenas gente, estoy intentando usar por primera vez el componente logger y me he topado con un error a ver si alguien sabe el porque?

 errorlogger

el error me lo da al cerrar el programa.

alguna idea de porque pasa?
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
Yo estoy utilizando el componente gb.logging, ahora actualizo a gambas 3.7 y me encuentro con que me da error gb.logging ya que ahora la propiedad Output es solo de lectura, yo antes guardaba los logs  en un archivo.
Ya que Sebikul anda de vez en cuando por aqui, como guardo ahora los logs si la propiedad output es de lectura no escritura
 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
angelnu escribió:  
Yo estoy utilizando el componente gb.logging, ahora actualizo a gambas 3.7 y me encuentro con que me da error gb.logging ya que ahora la propiedad Output es solo de lectura, yo antes guardaba los logs  en un archivo.
Ya que Sebikul anda de vez en cuando por aqui, como guardo ahora los logs si la propiedad output es de lectura no escritura


El problema esta en que ahora reescribi el sistema del logger. La clase Logger solo quedo para ser retrocompatible, pero se ver que se me escapo eso. Lo hice porque ahora si usas un ComplexLogger, puedes escupir mensajes a varios archivos, cada uno con una severidad distinta, y a la consola tambien (todo al mismo tiempo y de forma automatica, con un solo objeto ComplexLogger!)

La clase Logger, por este motivo lo tuve que reescribir. Las opciones que tienes para solucionar tu problema es mudarte a la clase ComplexLogger que provee esta funcionalidad que mencione, or pasar la ruta del archivo como parametro del constructor:

Public Sub _new(Optional iMinLevel As Integer = LogLevel.Info, Optional sFormat As String = DefaultFormat, Optional sOutput As String)
 


Es cierto que me falta documentar los cambios. Lo hare por estos dias.
Cualquier duda aqui estoy para responder!  
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
v3ctor escribió:  
buenas gente, estoy intentando usar por primera vez el componente logger y me he topado con un error a ver si alguien sabe el porque?

 errorlogger

el error me lo da al cerrar el programa.

alguna idea de porque pasa?


Puedes mandar un proyecto que reproduzca el error asi puedo ver exactamente de donde viene?
 



 
sebikul - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Componente Gb.logging 
 
aquí esta lo que había empezado.

el error se da cuando cierras la aplicación

sebikul intenta mandar un mensaje al log y también da otro error.


[System]
gambas=3.7.0
OperatingSystem=Linux
Kernel=3.13.0-37-generic
Architecture=x86
Distribution=Linux Mint 17.1 Rebecca
Desktop=MATE
Theme=QGtk
Language=es_UY.UTF-8
Memory=2776M
[Libraries]
Cairo=libcairo.so.2.11301.0
Curl=libcurl.so.4.3.0
DBus=libdbus-1.so.3.7.6
GStreamer=libgstreamer-0.10.so.0.30.0
GStreamer=libgstreamer-1.0.so.0.204.0
GTK+3=libgtk-3.so.0.1000.8
GTK+=libgtk-x11-2.0.so.0.2400.23
OpenGL=libGL.so.1.2.0
Poppler=libpoppler.so.44.0.0
Qt4=libQtCore.so.4.8.6
SDL=libSDL-1.2.so.0.11.4

MiLogger-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: MiLogger-0.0.1.tar.gz
Tamaño: 3.91 KB
Descargado: 31 veces
MiLogger-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: MiLogger-0.0.1.tar.gz
Tamaño: 3.91 KB
Descargado: 31 veces
MiLogger-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: MiLogger-0.0.1.tar.gz
Tamaño: 3.91 KB
Descargado: 31 veces

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Componente Gb.qt.kde nrcefe Controles/Librerías/Componentes 12 Viernes, 21 Octobre 2011, 19:17 Ver último mensaje
netking86
No hay nuevos mensajes Componente O Libreria Shell General 3 Domingo, 09 Marzo 2014, 11:59 Ver último mensaje
jsbsan
No hay nuevos mensajes Documentar Componente Guizans Controles/Librerías/Componentes 4 Martes, 19 Febrero 2019, 16:18 Ver último mensaje
Guizans
No hay nuevos mensajes Componente O Biblioteca ? tincho Aplicaciones/Fragmentos de Código 16 Miercoles, 11 Septiembre 2019, 08:36 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron