jueves, 16 de julio de 2009

SLF4J

Que es sfl4j ??   Es una biblioteca para facilitar la traza de mensajes en nuestras aplicaciones (Simple Logging Facade for Java  - SLF4J) con esta biblioteca podemos cambiar facilmente entre otros frameworks como log4j, commos-loggin, o usar  java.util.loggin, y lo unico que tenemos que hacer es agregar el jar slf4j-api.jar  y otro jar que corresponde al sistema de traza que hallamos elegido por ejemplo

slf4j-log4j12-1.5.8.jarr para usarlo con log4j version 1.12 o superior

slf4j-jdk14-1.5.8.jar para usarlo con java.util.loggin

slf4j-jcl-1.5.8.jar para usarlo con jakarta commons loggin

Ademas cuenta con una carecteristica muy interesante llamada  "traza parametrizada" (parametized loggin) la cual mejora el performance cuando se deshabilita la traza de mensajes.

Por ejemplo , para que nuestro sistema de traza mejore en performance, se hace una validacion para revisar si el nivel de traza esta habilitado y entonces se construye la cadena y se escribe la traza, si no es asi pues se ahorra tiempo al no construir la cadena :

if(logger.isDebugEnabled()) {
  logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

Con slfj4 podemos realizar una traza parametrizada (parametized loggin) , ejemplo:

Object entry = new SomeObject();
logger.debug("The entry is {}.", entry);

Pueden ver unas llaves en la cadena y una coma al final en lugar de un +,  con esto slfj4 sabe que primero debe ver si el nivel debug esta habilitado y despues formara la cadena pasando el valor de entry (o lo que retorne su metodo toString) en lugar de las llaves, y al finalizar a escribira pero si el nivel debug esta inhabilitado entonces no hara nada y no consumira tiempo, por lo que mejora nuestro performance y no tenemos que hacer comparaciones como la primera, sino que todo lo hara sfl4j.

Les recomiendo que lo prueben es interesante y  trabaja muy bien con otros frameworks, yo lo tengo integrado con log4j, lo unico que tuve que hacer es colocar el jar de logj4, los de sfl4j y el archivo properties donde log4j lee su configuracion.

1 comentario:

ruandischer tee dijo...

Show romanization Estoy intentando actualizar de Hibernate 3,2 a 3,4, que al parecer utiliza slf4j. Nuestro proyecto utiliza actualmente log4j. Así que mi hipótesis es que yo debería estar utilizando el slf4j-log4j12 envuelto aplicación.