[Jde-dev] funciones de logging in jderobot

David Lobato dav.lobato en gmail.com
Mar Mar 8 17:49:23 CET 2011


Hola,

He realizado una serie de cambios en la clase Component de jderobot para
permitir configurar el nivel de log del componente.
En principio no he modificado el API y no debería afectar a nadie. No
obstante, si alguien observa algo raro que lo comente por la lista.

Aprovechando el viaje, ya os pongo un ejemplo de uso para que veáis la
funcionalidad implementada en referencia a los logs.

Gearbox incluye una clase abstracta llamado gbxutilacfr::Tracer [1] que
implementa una serie de métodos para que nuestro programa vuelque
información en forma de trazas. Habitualmente para esto se usa un printf o
similar, pero cuando el sistema es grande, resulta útil definir tipos de
log, de manera que podamos indicar el tipo de la traza para que una vez
ejecutemos nuestro programa podamos elegir que mensajes deben imprimirse por
pantalla y cuales ignorarse.

Así, usando el API de gbxutilacfr::Tracer nuestro programa podría hacer:

tracer().debug( "jderobotice::Component: stopping
ComponentThread....");//esta traza es de tipo debug

ó

tracer().info( pImpl->context->tag() + ": Component infrastructure thread
created." );//esta traza es de tipo info

Además es posible indicar un nivel para el mensaje, de modo que sólo se
imprimirán aquellos mensajes que bajo el nivel configurado. En las llamadas
anteriores podríamos pasar un valor con el nivel de este mensaje, por
ejemplo 3. Si el nivel configurado del tipo info tiene un valor >= entonces
este mensaje se imprimirá. De esta manera podemos establecer niveles para
los mensajes.

Hasta ahora no era posible configurar los niveles de log que queríamos
mostrar, si no que se usaban los valores por defecto de
gbxutilacfr::TrivialTracer. Así que he añadido al constructor de la clase
jderobotice::Component un parámetro extra para pasar una configuración. Esta
configuración no es más que un array con gbxutilacfr::NumberOfTraceTypes [3]
en el que decimos el nivel de cada tipo de mensaje. Los valores van de 0 a
10, 0 indica que este tipo de mensajes no se imprimirán nunca, y 10 que se
imprimirán todos los mensajes.

Un ejemplo para configurar el nivel de logs:

int tracerConfig[5] = {9,9,9,9,0};
bgfglab::Component component(tracerConfig);

de esta manera se configuraría el nivel a 9 para todos los tipos de
mensajes.


Espero que os resulte útil,
Un saludo.
David.

[1] http://gearbox.sourceforge.net/classgbxutilacfr_1_1Tracer.html
[2] http://gearbox.sourceforge.net/classgbxutilacfr_1_1TrivialTracer.html
[3]
http://gearbox.sourceforge.net/namespacegbxutilacfr.html#ef6c9166854bf190dfcff7b859cc3213
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20110308/80874cb8/attachment.htm 


More information about the Jde-developers mailing list