Está en la página 1de 6

Anexo Generacin Trazas con Log4J

ANEXO GENERACIN DE TRAZAS CON LOG4J


Una traza es una descripcin real de la evolucin temporal de un sistema. Para generar esta
descripcin se debe disponer de acceso a los parmetros del sistema ue sean relevantes. La
generacin de trazas se !a realizado generalmente por medio de librer"as o unidades
dedicadas a ese e#ecto$ tal como L%G4J.
&n ocasiones$ estas unidades deben combinarse con el cdigo del programa o aplicacin a
monitorizar ' en otras puede !acerse por medio de una conexin al canal de comunicacin o al
sistema !ard(are. Tanto de una #orma como de otra$ la traza deber mantener la
correspondiente co!erencia ' !omogeneidad en su creacin.
La monitorizacin del sistema no de)a de ser un m*todo ue pueda inter#erir en el
#uncionamiento del mismo ' en algunos casos si no se presta la debida atencin a su
tratamiento$ esta inter#erencia de la observacin puede resultar problemtica$ dado ue la
generacin de la traza ' el almacenado en un arc!ivo es una tarea ms en el sistema.
&n primer lugar$ se comentan los problemas ue acarrea insertar instrucciones
System.out.println dispersas por todo el cdigo de una aplicacin. A continuacin$ se detalla
una con#iguracin m"nima ' apropiada del pauete Log4).
1.1 Comprensin de la situacin
La existencia de trazas es importante para a'udar en la tarea de depuracin de una aplicacin.
&scribir cdigo para generar trazas +log, es primitivo ' de mu' ba)o nivel.
-o se recomienda en absoluto cdigo del estilo.
System.out.println(El valor de la variable es: + valor)
&sta #orma de generar trazas plantear los siguientes problemas.
La salida por pantalla no se puede con#igurar.
-o se puede desactivar la salida para clases previamente seleccionadas.
-o se puede elegir sacar slo un subcon)unto de mensa)es.
La salida por pantalla puede degradar seriamente el rendimiento en algunos
servidores.
La generacin de trazas tiene varios usos$ pero el ms importante es #acilitar la depuracin.
Trazas bien colocadas en una aplicacin proporcionan a los desarrolladores el contexto
detallado en ue se !a producido un #allo. Por otra parte$ las pruebas aseguran la calidad '
#iabilidad necesarias. -o se debe con#undir la generacin de trazas con las pruebas. Ambas
son complementarias. /uando se usan adecuadamente$ las trazas son una !erramienta
esencial para un pro'ecto.

0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. 3
Anexo Generacin Trazas con Log4J
1.2 Log4j
1.2.1 Configuracin u!o a"#cua"o "# Log4$
&l pauete Log4) o#rece m4ltiples opciones$ como guardar trazas en #ormato 56L$ en bases de
datos$ etc. 1etallar todas ' cmo !acerlo no est en el mbito de este documento. Para ello$
consultar la documentacin disponible en
!ttp.77logging.apac!e.org7log4)7docs7documentation.!tml
Gracias al dise8o de Log4)$ es posible de#inir prioridades para las trazas. 1e esta #orma$ desde
el #ic!ero de con#iguracin se puede controlar el detalle de las trazas ue se van a generar. Las
prioridades prede#inidas o#recidas son +ordenadas de ma'or a menor detalle,.
DE%&G ' IN(O ' )ARN ' ERROR ' (ATAL
Por completitud$ se8alaremos ue tambi*n existen las prioridades ALL ' %99. Aunue no se
recomienda !acerlo$ se pueden de#inir nuevas prioridades.
&stableceremos los siguientes criterios para la explotacin de los niveles de log desde nuestro
cdigo.
DE%&G. 6ensa)es de depuracin. 0e puede utilizar para mostrar el valor de variables.
0on mensa)es ue deber"a entender ' ser tratados alguien ue conoce el cdigo de la
aplicacin. 2ncorporarn in#ormacin sobre c!ec:points ue a'udarn a seguir el curso
de la e)ecucin del algoritmo implementado. &ste nivel de log deber encontrarse
des!abilitado en produccin para evitar ue ralentice su e)ecucin.
IN(O. 6ensa)es de in#ormacin. 0e utilizan para anunciar el progreso en el #lu)o de la
aplicacin. 6arcarn inicios ' #inalizacin de bloues de actividades con cmputos de
tiempo empleado en realizarlas. ;e#le)arn con#irmacin de las acciones de
persistencia en base de datos$ marcando el inicio ' #in de las transacciones.
2ncorporarn en la traza la sentencia 0<L lanzada '7o parmetros de los
procedimientos almacenados. La actividad del pool de conexiones tambi*n deber"a
re#le)arse !aciendo uso de este nivel de trazas.
)ARN. 6ensa)es de advertencia$ usado dentro de la aplicacin para dar aviso de
excepciones esperadas ' ue nuestro cdigo sepa tratarlas para evitar ue la
aplicacin se interrumpa. Las trazas debern re#le)ar los datos de la operacin ue !a
generado la excepcin$ valores del #ic!ero de con#iguracin con la ue se est
realizando la operacin.
ERROR. 6ensa)es de error$ para dar aviso de errores inesperados ue no lleguen a
detener o a#ectar la e)ecucin de la aplicacin. La traza deber recoger la misma
in#ormacin ue la descrita para el caso anterior ' adems a8adir un indicador de
prioridad ue a'ude a comprender el alcance del error.
o NI*EL 1 = el proceso puede #inalizar correctamente a pesar de las
inconsistencias producidas. La propia aplicacin podr recuperarse de este
evento ' subsanarse el error con posterioridad mediante alg4n proceso de
actualizacin o sincronizacin.
o NI*EL 2 = se desconoce si la #inalizacin del proceso puede darse por vlida
debido a ue no es posible conocer el alcance de la inconsistencia '
solventarse de modo automatizado.
0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. >
Anexo Generacin Trazas con Log4J
o NI*EL + = el carcter del error es severo ' ser"a recomendable la intervencin
de un administrador para evaluar la situacin. &s aconse)able el acuse de tal
traza v"a correo electrnico al administrador del sistema. La direccin de
correo del administrador #igurar en el #ic!ero de con#iguracin de la aplicacin.

(ATAL. 6ensa)es de error$ para dar aviso de errores inesperados ue a#ectan o
detienen la e)ecucin de la aplicacin. 1eber implementarse un sistema de alerta al
administrador mediante correo electrnico ue avise con carcter de urgencia la ca"da
del sistema ' de)ar noti#icacin del env"o en el #ic!ero de log.
A lo largo de cualuier desarrollo iremos utilizando los distintos niveles de log para recoger
in#ormacin del estado ' #uncionamiento de nuestra aplicacin. Llegar un momento en ue los
mensa)es de menor importancia 'a no sern necesarios$ en ese caso podemos #iltrar auellos
ue no se necesiten +este es el tipo de #iltro ms bsico,$ de esa manera todos los mensa)es de
igual o ma'or nivel van a loguearse mientras ue los mensa)es de menor nivel sern ignorados.
Por e)emplo$ si se especi#ica 1&?UG$ los mensa)es a volcar en el log van a ser del tipo
1&?UG$ 2-9%$ @A;-$ &;;%; ' 9ATAL. 0i se especi#ica @A;-$ slo se mostraran auellos
del tipo de @A;-$ &;;%; ' 9ATAL.
&n de#initiva se !ace log de todos los niveles ue estn por deba)o del nivel especi#icado en el
#ic!ero de con#iguracin.
I,-ORTANTE.
La in#ormacin de la traza SI deber recoger in#ormacin temporal exacta sobre el
momento en ue se produzca ' el punto donde se !a generado ' mensa)e descriptivo
para poder luego proceder a su anlisis de manera e#ectiva.
La in#ormacin de la traza NO deber recoger in#ormacin susceptible de ser protegida
como pueda ser. datos de identi#icacin$ valores de acceso a bases de datos o
sistemas a)enos$ datos personales$ etcA
La con#iguracin de Log4) se !ace completamente con #ic!eros. Ba' tres posibilidades.
9ic!ero de propiedades.
9ic!ero 56L
&stableciendo propiedades desde el propio programa en tiempo de e)ecucin.
A continuacin se muestran los valores adecuados para los parmetros de con#iguracin del
log4). Lo !abitual ser"a utilizar el #ic!ero log4).properties para su con#iguracin debe ir en el
directorio 7@&?C2-97classes de la aplicacin @eb +o en su de#ecto en directorio incluido en el
/LA00PATB de la aplicacin,$ sin embargo en este caso la con#iguracin va a ser tratada de
#orma dinmica del #ic!ero de con#iguracin xml de la aplicacin +ver cap"tulo de #ic!eros de
con#iguracin,$ al encontrarse a!" centralizada todos los parmetros de con#iguracin de la
aplicacin en un 4nico #ic!ero.
0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. D
Anexo Generacin Trazas con Log4J
0e indicar en los valores de la con#iguracin el directorio sobre el ue se crearn los # ic/#ro!
incr#0#n1a2#! "# 1ra3a!. &ste directorio ue contiene los #ic!eros de log debe encontrarse
#uera del servidor de aplicaciones$ en cualuiera de las muinas ue #orman el cluster para
permitir realizar operaciones de borrado mediante procesos batc! ' evitar bloueos o
desbordamientos dentro del contexto del servidor de aplicaciones.
0e aplicar el siguiente criterio temporal a la !ora de tratar los #ic!eros de log. &xistir un
#ic!ero de log "iario$ la primera traza generada del d"a proceder a la creacin del #ic!ero con
la siguiente sintaxis.
/usr//log/nombrelog _ddmmaaaa.log
0iendo nombrelog tambi*n recogido del #ic!ero de con#iguracin de la aplicacin. &n caso de
ue el #ic!ero de log diario crezca por encima de 3EEF? se proceder a realizar un bac:up de
#ic!eros diarios !asta 4$ acorde con los parmetros de con#iguracin de log4) indicados a
continuacin.
<log id=log desc="coniguraci!n de log"#"$
<param id="pat%" value="/usr//log"&$
<param id="ile" value="nombrelog"&$
<'(( active appenders (($
<param id="log"#.root)ogger" value="*arn+ stdout+ ile"&$
<'(( console appender setup (($
<paramid="log"#.appender.stdout" value="org.apac%e.log"#.,onsole-ppender"&$
<param id="log"#.appender.stdout.layout" value="org.apac%e.log"#..attern)ayout"&$
<param id="log"#.appender.stdout.layout.,onversion.attern" value="/0p 1/t2 (/3:
/)) 4
/m/n" desc="s%o* ilename and line number"&$
<'(( ile appender setup (($
<param id="log"#.appender.ile" value="org.apac%e.log"#.5olling3ile-ppender"&$
<param id="log"#.appender.ile.3ile" value="67log.ile8"&$
<param id="log"#.appender.ile.9a:3ileSi;e" value="<==>?"&$
<param id="log"#.appender.ile.9a:?ac@upAnde:" value=""" desc="support our
bac@up"&$
<param id="log"#.appender.ile.layout" value="org.apac%e.log"#..attern)ayout"&$
<param id="log"#.appender.ile.layout.,onversion.attern" value="/d7BB:mm:ss.SSS8
/(0p
1/t2 ( /mCn"&$
<'D( notiication mail (($
<param id="log"#.notiication.enabled" value="true" desc="notiicaciones de
error"&$
<param id="log"#.notiication.mail" value="adminEserver.es" desc="administrator
mail"&$
<&log$
1.2.2 E$#042o "# u!o
import org.apac%e.log"#.)oggerF
public class Gemo 7
static )ogger log = )ogger.get)ogger(Gemo.class.getHame())F

public static void main(String12 args) 7
log.ino("Anicio de programa...")F
try 7
&& Givision por cero
int : = 0F
int y = I= & (0 ( :)F
8 catc% (-rit%meticE:ception e) 7
0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. 4
Anexo Generacin Trazas con Log4J
log.error("Se %a producido un error"+ e)F
8
8
8
/on la con#iguracin proporcionada por el #ic!ero log4).properties mostrado arriba$ el resultado
ser ue tanto por pantalla como en el #ic!ero indicado se obtendr la siguiente traza.
I==0(="(IJ <K:0K:0<+0LJ AH3M 1Gemo2 ( <Anicio de programa...$
I==0(="(IJ <K:0K:0<+0NK E55M5 1Gemo2 ( <Se %a producido un error$
#ava.lang.-rit%meticE:ception: & by ;ero
at Gemo.main(Gemo.#ava:<<)
/ambiando la prioridad desde el #ic!ero de con#iguracin$ se puede controlar la traza a mostrar.
&ste cambio debe poder realizarse sin necesidad de reiniciar el servidor de aplicaciones$ esto
es posible !acerlo con la a'uda de 1om/on#igurator 'a incluido en Log4).
1.2.+ 5#rra0i#n1a! "# !o4or1# a Log4$
/omo venta)a adicional a las 'a enumeradas$ existen varias !erramientas +comerciales '
openCsource, ue toman como entrada las trazas generadas por Log4) ' las representan
gr#icamente. &n este apartado se describen brevemente dos !erramientas openCsource.
/!ainsa( ' Lumbermill.
Chainsaw (http://sourceforge.net/projects/logui)
1isponible a partir de la versin 3.> de Log4).
/aptura mensa)es de trazas enviados por T/P72P.
Puede representar gr#icamente trazas generadas en #ormato 56L.
0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. G
Anexo Generacin Trazas con Log4J
Lumbermill (http://sourceforge.net/projects/lumbermill)
/aptura mensa)es de trazas enviados por T/P72P.
&s un poco ms atractivo gr#icamente ue /!ainsa( ' permite #iltrar trazas en la
muina cliente.
-o soporta trazas en #ormato 56L .
0ubdireccin General de 1esarrollo$ Tecnolog"a e 2n#raestructuras.
Pgina. H

También podría gustarte