lunes, marzo 28, 2011

configurando log4j para una aplicacion stand alone

Esta ocacion, abordare de forma rapida como poder configurar log4j en nuestros proyectos stand alone.

algunas ocaciones queremos tener un registro de algunos acontesimientos que pasan con nuestra aplicacion, por ejemplo tener un documento donde guardar la hora en que ocurrio algo inersperado en el sistema, una exception, o alguna accion.

una forma muy sensilla es utilizar esta libreria para lograr nuestro cometido, por lo cual necesitamos tener lo siguiente:

1.- descargar la libreria de log4j en -> http://logging.apache.org/log4j/1.2/download.html

ahora en tu proyecto crea una carpeta a la altura de src, que puedes llamar lib (por estandar), agregar la libreria que descargaste

hecho esto ve a las propiedades de tu proyecto, y agrega la libreria (esto es necesario solo para aplicaciones stand alone, y se hace por defecto para aplicaciones web)

lo que pasa a continuacion, es que cuando ejecutes tu aplicacion, te diria antes de hacer cualquier cosa, que configures tu log4j

bueno, ahora configuremoslo:

crea un archivo .xml y llamalo digamos logsAplicacion :)

TODO LOS CODIGOS LLEVAN SU MAYOR Q Y MENOR Q, SOLO Q ME LOS QUITA ¬¬

1.- cuando creas un xml por defecto se pone :
?xml version="1.0" encoding="UTF-8"?
pero bueno si no ya sabes q hacer.

2.- agrega la siguiente linea de codigo para que tu aplicacion sepa q se trata de un documento de configuracion para el log
!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"

ahora todo el codigo que veremos a continuacion va entre un bloque xml

log4j:configuration debug="true"

/ log4j:configuration

tenemos 2 configuraciones basicas, que crees un archivo y guardes todos tus acontecimientos o que imprimas en consola todos tus acontecimientos, veamos la primer forma

3.- tenemos que crear un bloque appender, dentro del cual configuraremos nuestras politicas para crear el archivo de log, le brindamos tambien un nombre para poder utilizarlo despues
appender name="log_en_archivo" class="org.apache.log4j.RollingFileAppender"

/ appender


4.- dentro de este bloque, definimos el tamaño maximo de nuestro archivo:
param name="maxFileSize" value="100MB" /

5.- definamos la ruta y nombre de nuestro archivo
param name="file" value="c://logs/archivo_log.log" /

6.- definamos el layout que utilizaremos para escribir la informacion en el archivo
layout class="org.apache.log4j.PatternLayout"

param name="ConversionPattern" value="%d{ISO8601} %5p %c{1}:%M - %m%n"/

/ layout
no abundare mucho en esta parte, pero para mas informacion, busca el apli de log4j, la clase patternLayout

7.- bueno hemos terminado con el bloque appender, ahora tenemos que llamarlo, es algo asi como si de un metodo llamaramos a otro
root

priority value="info" /

appender-ref ref="
log_en_archivo"/

/root


si queremos que la informacion se pinte en consola solo hay que modificar un poco lo que ya tenemos

1.-
la clase que ocupa nuestro appender cambiaria, ya no seria RollingFileAppender, seria ConsoleAppender lo que nos llevaria a algo como:

appender name="log_en_consola" class="org.apache.log4j.ConsoleAppender"

2.-
los parametros de tamaño de archivo y archivo los sustituimos por:

param name="Target" value="System.out"/

esto hara que el log se pinte en consola

3.- y para llamarlo, en el bloque root llama al nuevo appender
si quieres llamar a los 2 solo agrega los 2 llamados a los appender, asi lo puedes realizar n veces

NOTA: si ves el bloque root tengo una etiqueta llamada priority, es por que los log se manejan por prioridad, en este caso tengo info, pero hay mas como debug, pero la neta no recuerdo los otros, como sea en el api de log4j lo encuentras :) si no me mandas un comment

LLAMANDO A NUESTRO ARCHIVO DE CONFIGURACION

ya tenemos nuestro archivo de configuracion, si lo hubieramos nombrado log4j.xml hay hubieramos terminado todo, ya que al cargar la libreria, al ejecutar el proy se busca el archivo de configuracion con ese nombre. pero pues q chiste, por eso lo hemos nombrado
logsAplicacion.xml

para
poder invocar el archivo en tu clase principal, antes de q comienzes a codificar, llamemos a nuestro log. Dentro de nuestra clase main hacemos lo siguiente

1.- DOMConfigurator.configure(Loader.getResource("
logsAplicacion.xml"));
no indicamos ruta, pues se supone que este archivo se encuentra a dentro de la carpeta src

SOLO NOS FALTA PODER UTILIZAR NUESTRO ARCHIVO DE CONFIGURACION

ya tenemos nuestro archivo, y ya esta cargado, falta utilizarlo en las clases que deceemos

1.- supongamos q tenemos una clase llamada Pruebas.java

2.- dentro de la clase, y como una variable global declaramos a nuestro loguer, haciendo llamado a la clase que queremos loguear
private static Logger log = Logger.getLogger( Prueba.class );


y por ejemplo en ves de poner System.out.println("Entrando al sistema");
System.out.println("Operacion Realizada");

bastara poner log.info("Entrando al sistema");
log.("Operacion realizada");

en el caso de las excepciones como

try{ }
catch(SQLException e) {
System.out.println("Error en la consulta");
}

pondriamos


try{ }
catch(SQLException e) {
log.error("Error en la consulta", e);
}

asi tanto en archivo como consola se imprimira todo lo que deceemos, para poder asi tener un control de nuestras acciones


como pueden ver en realidad no es mucho trabajo, por algo muy presiado como son los logs, que nos pueden sacar de grandes aprietos, sin necesidar de tener que debuguear una aplicacion para saber donde ocurrio un error o algo por el estilo

espero que sea de su agrado.

No hay comentarios:

Publicar un comentario