Configurando Log4J con xml ó properties

Log4j es un proyecto que nos permite administrar nuestro log de la aplicación de una manera mas ágil y ordenada, cuenta con los varios niveles OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL(Numerados de Mayor importancia a menor importancia).
Para Configurar Nuestro loc4j lo primero que necesitamos es descargar la Distribución Necesaria, entramos a (http://logging.apache.org/log4j/1.2/download.html) y descargamos la versión actual, en este caso utilizaremos la 1.2.16.
Nota: Bajemos el zip.
Abrimos nuestro eclipse y creamos u nuevo proyecto java.
Archivo>Nuevo>Java Project
Creamos en nuestro proyecto una carpeta llamada lib.
Ahora descomprimimos nuestro Archivo apache-log4j-1.2.16.zip  y veremos el archivo log4j-1.2.16.jar copiamos este archivo a nuestro proyecto (a la carpeta lib) de eclipse.
Vamos al nuestro jar ( log4j-1.2.16.jar) en la carpeta lib, y hacemos click con el boton derecho > Build Path > Add to build Path (Esto hara que ya podamos utilizar la libreria en el proyecto).
Ahora es momento de crear nuestra clase LoggerTest (Archivo>Nuevo>Class) y quedara de la siguiente forma:
package com.mx.log4j.test;
import org.apache.log4j.Logger;
public class LoggerTest {
//Iniciamos el Logger
private static final Logger logger = Logger.getLogger(LoggerTest.class);
public static void main(String[] args) {
for (int i = 0; i < 50; i++) {
logger.debug("Entrando a ciclo con i=" + i);//Indicamos el nivel del log debug
logger.info("Valor de i = " + i);//Indicamos el nivel del log info
logger.debug("Termine ciclo con i=" + i);//Indicamos el nivel del log debug
}
}
}
Ahora pasamos a escribir nuestro log4j.properties ó log4j.xml, empecemos con el log4j.xml.
Vamos a Archivo>Nuevo>File> y Creamos en el src de java el archivo log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="CONSOLE">
<param name="Target" value="System.out" />
<param name="Encoding" value="UTF-8" />
<layout>
<param name="ConversionPattern" value="%-5p %c [%t] - %m%n" />
</layout>
</appender>
<root>
<priority value="DEBUG" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
Ahora qué ya tenemos todo configurado, vamos a probar nuestra aplicación, y veremos lo siguiente:
Notaremos que se imprimen todas las lineas que hemos definido (INFO y DEBUG) en nuestro log4j.

Ahora veamos la principal ventaja en administración y mantenimiento del log, realicemos un pequeño cambio en log4j.xml, vamos a la siguiente linea:
<root>
<priority value="DEBUG" />
<appender-ref ref="CONSOLE" />
</root>
y remplacemoslo por:
<root>
<priority value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
Guardamos y corremos de nuevo nuestra aplicación.

Notamos que ahora cambia la salida por consola de nuestra Aplicación ¿porque? , al inicio de ésta entrada se comentó qué existían varios niveles de prioridad, esto significa qué si en nuestro archivo de configuración definimos él nivel de prioridad INFO  nuestro Log funcionará con todos los logger.info y todos los logs con prioridad mayor  (logger.warn, logger.error,  logger.fatal) y no se mostraran los dé menor prioridad (logger.debug).
NOTA: En ambiente de desarrollo es recomendable tener nuestro Log en modo debug, mientras qué en ambientes productivos es recomendable él nivel INFO, si te preocupa cuanto pueda crecer tu Log es recomendable él nivel de ERROR y así solo tendremos en nuestro Log el error si es qué llega á existir.
Ahora vamos a configurar el log4j con un archivo .properties, lo primero que hay que hacer es eliminar el log4j.xml (Si borrarlo, anda no pasa nada), y ahora Vamos a Archivo>Nuevo>File> y Creamos en el src de java el archivo log4j.properties.
log4j.rootCategory=DEBUG, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.CknsoleAppender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %c [%t] – %m%n

Imagen

Ahora ejecutamos nuestra apliccacion y veremos que de nuevo Notaremos que se imprimen todas las lineas que hemos definido (INFO y DEBUG) en nuestro log4j, ahora si queremos que solo nos imprima los INFO, cambiemos la primera linea
log4j.rootCategory=DEBUG, CONSOLE
por
log4j.rootCategory=INFO, CONSOLE
y ahora volvemos a ejecutar nuestra Aplicaciòn y notaremos que nos muestra ahora solo los INFO.

Nota: Esta configuración se puede utilizar para ambientes WEB, EJB ó aplicaciones de Escritorio ya que es transparente la configuración.
En los servidores esto se puede ver reflejado en el archivo server.log, si quisieramos crear un log en el que solo se muestren nuestro rastreo, deberiamos de modificar el archivo log4j.properties y agregar lo siguienpe:
log4j.rootCategory=INFO,FILE,CONSOLE 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %c [%t] - %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=C:\tmp\prueba.log
log4j.appender.FILE.MaxFileSize=50MB
log4j.appender.FILE.MaxBackupIndex=2000
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%5p [%d] [%t] (%F:%L) - %m%n
Asi nos mostrara lo que el log va escribiendo en consola y adicionalmente nos creara un archivo con lo mismo que se ve en la consola en la ruta : C:tmpprueba.log

Asi terminamos la entrada de este post, si tienes algun problema no dudes en preguntar.

Anuncios
Tagged with: , , , ,
Publicado en j2ee, Uncategorized

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: