Diferencia entre revisiones de «SLF4J»
(→Migración de Log4J a SLF4J) |
(→Uso de MDC) |
||
Línea 84: | Línea 84: | ||
</code> | </code> | ||
− | En [[ | + | En [[SLF4J]] la sintaxis es igual, sólo cambia el import del MDC: |
<code java5> | <code java5> | ||
import org.slf4j.MDC; | import org.slf4j.MDC; |
Revisión del 20:48 2 jul 2012
Simple Logging Facade for Java (SLF4J) es una librería Java que funciona como una abstracción simple para varios frameworks de logging (como Log4J, java.util.logging o Logback). Le permite al usuario final agregar el framework de log deseado al momento de deploy.
Agregar SLF4J a un proyecto implica agregar un único jar, llamado slf4j-api.jar. Si no se agrega ninguna extensión para integrar con un framework de log, SLF4J usará una implementación dummy (que no loguea).
Contenido
Uso clásico
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MiClase {
private static Logger logger = LoggerFactory.getLogger(MiClase.class);
public void unMetodo() { log.info("Hola, mundo"); }
}
Migración de Log4J a SLF4J
Es relativamente sencillo quitar todas las referencias de Log4J de una aplicación para utilizar el API de SLF4J. Una vez hecho esto, la aplicación seguirá usando Log4J para loguear, pero las clases no harán referencia a este framework (y nos permitirá, a futuro, cambiar el framework de log sin realizar cambios en el código).
Los pasos para agregar SLF4J a un proyecto con Log4J son:
- Agregar los JAR de SLF4J.
- Reemplazar las referencias a Log4J en el código por las equivalentes en SLF4J.
Agregar los JAR de SLF4J
Necesitamos al menos 2 JAR:
- slf4j-api
- slf4j-log4j12
Además, es muy probable que algunas librerías del proyecto utilicen Jakarta Commons Logging (JCL). Para integrar también estas librerías, necesitamos agregar un JAR extra:
- jcl-over-slf4j
Usando Maven, el POM queda:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.6</version> </dependency>
Reemplazar referencias a Log4J por equivalentes en SLF4J
Existen equivalente en SLF4J para llamadas a Log4J.
Obtención del Logger
En Log4J el logger se obtiene:
import org.apache.log4j.Logger;
...
private static Logger log = Logger.getLogger(MiClase.class);
En SLF4J el logger se obtiene:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
..
private static Logger log = LoggerFactory.getLogger(MiClase.class);
Uso de MDC
Log4J#Log4JMDC permite asociar información de contexto para ser usada por el framework de log. En Log4J el MDC se establece:
import org.apache.log4j.MDC;
...
try { MDC.put("unValor", valor); //hacer algo } finally { MDC.remove("unValor"); }
En SLF4J la sintaxis es igual, sólo cambia el import del MDC:
import org.slf4j.MDC;
...
try { MDC.put("unValor", valor); //hacer algo } finally { MDC.remove("unValor"); }