El post de hoy surge por la necesidad de configurar correctamente los logs que salen por consola en nuestros proyectos WEB.
Se acabó el utilizar el el System.out.println.
La configuración es muy variada:
1 - Configuración por programación: Desde un public void Main:
2 - Configuración desde un XML
3 - Configuración desde un archivo de properties.
pero aquí me voy a centrar en mi caso particular que es la configuración de log4j en un proyecto WEB a través de un archivo de properties.
1 - Lo primero que necesitamos tener es la última versión de nuestra librería favorita log4j.
2 - Configuramos un proyecto WEB en nuestro IDE favorito, eclipse en mi caso.
3 - Ponemos la librería (log4j-1.2.17.jar) en el directorio WEB-INF/lib
4 - Creamos y configuramos un servlet para poder realizar las pruebas, en mi caso con Spring Framework.
Una vez que tenemos el proyecto correctamente configurado vamos a lo que nos interesa
5 - Creamos el archivo log4j.properties en el raíz del directorio src para que esté en la raíz de nuestras clases, con la siguiente configuración
--
# log4j.properties for
# Set root category priority to DEBUG and its only appender to Console.
log4j.rootLogger=debug,stdout
#appender definition
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= linea %L %c %d %m %n
--Con estos pasos ya sería suficiente para que aparecieran trazas pero vamos a ver como configurar, pero vamos a entender un poco como funciona.
Tenemos que diferencias entre loggers, appenders y layouts
Un logger es el elemento que se encarga de recopilar y generar los logs en base a una configuración de un appender y un patternlayout. En nuestro ejemplo el logger es stdout
Un appender es donde se almacenan los logs generados por los loggers, hay muchos tipos lo más usados el org.apache.log4j.ConsoleAppender para mostrarlo por consola. Para ampliar información en las referencias hay un montón de tipos.
Un layout es la manera en que se imprime la traza, es decir que información escribirá el logger en el appender.
El rootLogger = Es el padre de todos los appenders y la cong
Con el código que hemos puesto en la clase log4jtest.java y con la configuración de log4j.properties en debug nuestras trazas que aparecerían en la consola serian las siguientes:
linea 22 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,057 debug
linea 23 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,058 error
linea 24 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,058 info
linea 25 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,058 fatal
Modificando la línea:
log4j.rootLogger=debug,stdout
podemos modificar el nivel de nuestros logs para que aparezcan o no las trazas que queremos.
log4j.rootLogger=error,stdout
al configurarlo para que salgan las trazas de error, las dos únicas líneas que aparecerían serían:
linea 24 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,058 info
linea 25 org.antuansoft.mvc.log4jtest 2013-02-16 02:48:15,058 fatal
UPDATE:
Si lo que quieres es modificar el nivel de log de uno de los paquetes de tu proyecto nada más, lo que tienes que hacer es añadir la siguiente línea al log4j.properties
log4j.category.com.mypackage=LEVEL
Por ejemplo:log4j.category.org.antuansoft.mvc=info
Eso haría que sólo las trazas que contengan ese paquete se muestren en modo info y el resto en el modo que hayamos especificado el rootlogger.Aquí dejo un enlace con el de código y información ampliada en los enlaces.
Código en githup, ejemplo MVC con SpringFramework y log4j
Para acceder sólo hay que ponerlo en un servidor de aplicaciones tomcat y ejecutar la siguiente url
http://localhost:8080/AntuanSoft_BASE_WEB_SPRING_PROJECT/log4jtest
Referencias: Para más información este tutorial cubre todos los casos http://www.javatutoriales.com/2011/04/log4j-para-creacion-de-eventos-de-log.html
http://www.arquitecturajava.com/log4j-y-pattern-layouts/
http://stackoverflow.com/questions/1725958/how-do-you-change-a-packages-log-level-using-log4j
No hay comentarios:
Publicar un comentario