Fecha de creación del tutorial: 2008-02-10
Log4J: Cómo crear distintos logs en función de su naturaleza y nivel
Una tarea fundamental en todo proyecto informático es la generación de log o trazas, generalmente para detectar y solucionar los posibles errores que pudieran producirse.
En mi experiencia en este sector he observado que normalmente los programadores dejan sus logs en un archivo mismo archivo independientemente de su naturaleza (entrada/salida, seguridad, interfaz gráfico, etc.) y nivel (debug, info, warn, etc.). Yo particularmente no estoy del todo deacuerdo con esté método. Soy más partidario de crear varios archivos y así no mezclar peras con manzanas. Con esto consigo detectar los problemas más rapidamente, así como para tener mayor flexibilidad a la hora de cambiar los niveles de traceo en determinadas partes de la aplicación según las necesidades.
Una aplicación medianamente bien diseñada organizará sus clases en paquetes en donde las clases tienen algún tipo de relacción semántica.
Por ejemplo, las clases de acceso a datos no deberían estar en el mismo paquete que clases de interfaz gráfica.
En este tutorial vamos a generar 4 archivos de Logs:
tuApplicationName.log:
En este archivo dejaremos todas las salidas de log, independientemente de su naturaleza y nivel.tuApplicationNameErrorFile.log:
En este archivo dejaremos las salidas de avisos o errores (No los de debug o info) de cualquier parte de la aplicacion.tuApplicationNameErrorFile1.log:
En este archivo dejaremos las salidas de avisos o errores (No los de debug o info) de cualquier clase del paquetecom.autentia.tutoriales.log4j.paquete1o sus subpaquetes.tuApplicationNameErrorFile2.log:
En este archivo dejaremos las salidas de avisos o errores (No los de debug o info) de cualquier clase del paquetecom.autentia.tutoriales.log4j.paquete2o sus subpaquetes.
En el paquete com.autentia.tutoriales.log4j.paquete1, agruparíamos las clases con una determinada funcionalidad.
En el paquete com.autentia.tutoriales.log4j.paquete2, agruparíamos las clases con una determinada funcionalidad.
Archivo de configuración de Log4j: autentiaLog4jTutorial.xml
tuApplicationName.log:
2008-02-10 12:01:35 [DEBUG] [com.autentia.tutoriales.log4j.EjemploLog.main(EjemploLog.java:25)] Salida DEBUG desde la clase EjemploLog 2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.EjemploLog.main(EjemploLog.java:28)] Salida ERROR desde la clase EjemploLog 2008-02-10 12:01:35 [DEBUG] [com.autentia.tutoriales.log4j.paquete1.Clase1.(Clase1.java:18)] Salida debug desde la clase 1 2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete1.Clase1. (Clase1.java:20)] Salida error desde la clase 1 2008-02-10 12:01:35 [DEBUG] [com.autentia.tutoriales.log4j.paquete2.Clase2. (Clase2.java:17)] Salida debug desde la clase 2 2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete2.Clase2. (Clase2.java:19)] Salida error desde la clase 2
tuApplicationNameErrorFile.log
2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.EjemploLog.main(EjemploLog.java:28)] Salida ERROR desde la clase EjemploLog 2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete1.Clase1.(Clase1.java:20)] Salida error desde la clase 1 2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete2.Clase2. (Clase2.java:19)] Salida error desde la clase 2
tuApplicationNameErrorFile1.log
2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete1.Clase1.(Clase1.java:20)] Salida error desde la clase 1
tuApplicationNameErrorFile2.log
2008-02-10 12:01:35 [ERROR] [com.autentia.tutoriales.log4j.paquete2.Clase2.(Clase2.java:19)] Salida error desde la clase 2
Conclusiones
La gestión de trazas es una parte fundamental de toda aplicación, por lo que es recomendable establecer alguna política o pautas al respecto dentro del proyecto.
Recordar que la mayor parte del dinero de un sistema informático se va en mantenimientos, así que un buen sistema de logs nos hará la vida más fácil y nos permitirá ahorrar muchos esfuerzos (dinerito).
Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.
cgpcosmad@gmail.com
Anímate y coméntanos lo que pienses sobre este tutorial
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
| Autor | Mensaje de usuario registrado |
|---|
- Puedes inscribirte en nuestro servicio de notificaciones haciendo clic aquí.
- Puedes firmar en nuestro libro de visitas haciendo clic aquí.
- Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.
- Añadir a favoritos Technorati.
Esta obra está licenciada bajo licencia Creative Commons de
Reconocimiento-No comercial-Sin obras derivadas 2.5
Recuerda
Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.
¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...
Autentia = Soporte a Desarrollo & Formación.
Tutoriales recomendados
| Nombre | Resumen | Visitas | Valoración | Votos | ||
|---|---|---|---|---|---|---|
| Cómo generar versiones imprimibles de páginas web | En este gran océano de textos, imágenes y enlaces que es Internet hay algunas cosas que merecen la pena ser impresas. Estoy seguro de que alguna vez has necesitado imprimir alguna página web y no has podido hacerlo directamente porque la impresión iba a q | 2010-02-08 | 152 | - | - | ![]() |
| JMeter. Uso de funciones. | En este tutorial tratamos el uso de las funciones más habituales de la herramienta JMeter. | 2010-01-26 | 465 | - | - | ![]() |
| Introducción a jQuery. | jQuery es una librería javascript ligera, rápida y concisa que simplifica el tratamiento de documentos HTML, el manejo de eventos, la creación de animaciones y las interacciones vía Ajax, para agilizar el desarrollo de aplicaciones web. | 2010-01-18 | 832 | Bueno | 1 | ![]() |
| Cómo consumir un servicio web RESTful con el soporte de Ajax y JSON de jQuery. | En este tutorial vamos a seguir analizando cómo explotar las funcionalidades de jQuery. | 2010-01-18 | 529 | - | - | ![]() |
| jQuery: cómo crear nuestros propios plugins. | En este tutorial vamos a ver cómo crear un plugin para jQuery sencillo, para sentar las bases, y otro un poco más elaborado. | 2010-01-18 | 607 | - | - | ![]() |
| Introducción a jQuery UI. | En los tutoriales anteriores hemos hecho una introducción a jQuery y hemos visto cómo crear plugins para jQuery. Ahora se trata de seguir ampliando conocimientos, haciendo uso de una librería que se basa en la misma. | 2010-01-18 | 814 | - | - | ![]() |
| Introducción a Tapestry 5 | Si estás cansado de programar con frameworks web con los que para hacer un simple holamundo tienes que tirar muchísimas líneas de código de XML o peor sigues trabajando con JSP donde además metes código Java en forma de snippets que son difícil de depurar | 2010-01-17 | 503 | - | - | ![]() |
| JMeter. Gestión de usuarios | En este tutorial tratamos la simulación de distintos usuarios, en la herramienta JMeter, mediante el archivo externo users.xml o mediante la función Counter. | 2010-01-14 | 700 | - | - | ![]() |
| JMeter y JSF. Extracción del parámetro ViewState | En este tutorial ofrecemos una solución a la parametrización del atributo ViewState, de JSF (Java Server Faces), cuando ejecutamos scripts de pruebas de carga mediante la herramienta JMeter. | 2010-01-11 | 665 | - | - | ![]() |
| Importar el correo de Microsoft Outlook al cliente de correo de Mac OS. | En este tutorial vamos a explicar cómo importar el correo de Windows a Mac, del cliente de correo Microsoft Outlook al cliente de correo Apple Mail de Mac OS X | 2010-01-07 | 699 | - | - | ![]() |
Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento.
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores.
En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo.
Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.







