Simple Logging Facade for Java ( SLF4J ) proporciona una API de registro de Java mediante un patrón de fachada simple . El backend de registro subyacente se determina en tiempo de ejecución agregando el enlace deseado al classpath y puede ser el paquete de registro estándar de Sun Java java.util.logging, [ 2 ] Log4j , Reload4j, Logback [ 3 ] o tinylog. [ 4 ] [ 5 ]
La separación de la API del cliente del sistema de registro reduce el acoplamiento entre una aplicación y cualquier framework de registro específico. Esto facilita la integración con código existente o de terceros, así como la incorporación de código a otros proyectos que ya hayan elegido un sistema de registro.
SLF4J fue creado por Ceki Gülcü como una alternativa más confiable al marco de registro Jakarta Commons. [ 6 ] [ 7 ] Una investigación de 2013 sobre 10 000 proyectos de GitHub encontró que la biblioteca Java más popular es SLF4J, junto con JUnit , con un 30,7 % de los proyectos que la utilizan. [ 8 ] En enero de 2021, fue clasificado como el segundo proyecto más popular según mvnrepository. [ 9 ]
Similitudes y diferencias con log4j 1.x
- Se utilizan cinco de los seis niveles de registro de log4j (ERROR, WARN, INFO, DEBUG, TRACE). Se ha eliminado FATAL porque, desde el punto de vista del registrador, no es el marco de registro donde se decide cuándo debe finalizar una aplicación; por lo tanto, no hay diferencia entre ERROR y FATAL. Además, los marcadores SLF4J ofrecen un método más general para etiquetar las sentencias de registro. Por ejemplo, cualquier sentencia de registro de nivel ERROR puede etiquetarse con el marcador "FATAL".
- Las instancias de Logger se crean a través de
LoggerFactory, que es muy similar en log4j. Por ejemplo,private static final Logger LOG = LoggerFactory . getLogger ( Wombat . class );
- En Logger , los métodos de registro están sobrecargados con formas que aceptan uno, dos o más valores. [ 10 ] Las ocurrencias del patrón simple
{}en el mensaje de registro se reemplazan sucesivamente con los valores. Esto es sencillo de usar y proporciona una ventaja de rendimiento cuando los valores tienentoString()métodos costosos. Cuando el registro está deshabilitado en el nivel dado, el marco de registro no necesita evaluar la representación de cadena de los valores, ni construir una cadena de mensaje de registro que nunca se registra realmente. En el siguiente ejemplo, la concatenación de cadenas ytoString()el método para los valorescountouserAccountListse realizan solo cuando DEBUG está habilitado.
LOG.debug ( "Ahora hay " + count + " cuentas de usuario: " + userAccountList ); // más lento LOG.debug ( " Ahora hay {} cuentas de usuario: {}" , count , userAccountList ) ; // más rápido- En Logger existen métodos similares para
isDebugEnabled()permitir que las llamadas de registro más complejas se encapsulen de manera que se deshabiliten cuando se desactive el nivel correspondiente, evitando así un procesamiento innecesario. - A diferencia de log4j , SLF4J ofrece métodos de registro que aceptan marcadores. Estos son objetos especiales que enriquecen los mensajes de registro. Actualmente, logback es el único framework que utiliza marcadores.
Similitudes y diferencias con log4j 2.x
Apache log4j 2.x admite todas las características de slf4j. [ 11 ]
Historial de versiones
Versión 2
La versión 2.0.0 se publicó el 20 de agosto de 2022. La última versión publicada es la 2.0.17 (25 de febrero de 2025). [ 12 ]
Cambios importantes y nuevas funciones:
- Compatibilidad con la sintaxis lambda para pasar mensajes que se registrarán.
- Adición de una API fluida .
- Requiere Java 8 o posterior.
- Utiliza el
ServiceLoadermecanismo para encontrar un sistema de registro de eventos.
Versión 1
Los detalles de la versión se pueden encontrar en el manual .
Las versiones más importantes incluyen:
- La versión 1.7.36 y todas las versiones posteriores son reproducibles .
- En la versión 1.7.35, el módulo slf4j-log4j12 se reemplaza por slf4j-reload4j.
- La versión 1.7.33 añade compatibilidad con reload4j mediante el módulo slf4j-reload4j. Es la última versión estable. Consulte la página de descarga del producto.
- La versión 1.7.5 produjo una mejora significativa en los tiempos de recuperación del registrador.
- La versión 1.7.0 añadió compatibilidad con argumentos variables (varargs) , lo que requiere compatibilidad con Java 5 o posterior.
- La versión 1.6 introdujo una implementación que no realiza ninguna operación y que se utiliza por defecto si no se encuentra ningún enlace.
- Las versiones 1.1 se publicaron en los repositorios Maven a partir de septiembre de 2006 .
Véase también
Referencias
- ↑ "Versión 2.0.18" . 12 de mayo de 2026. Consultado el 13 de mayo de 2026 .
- ↑ java.util.logging
- ↑ logback
- ↑ tinylog
- ↑ "Enlace SLF4J para tinylog" . Archivado del original el 7 de diciembre de 2017. Consultado el 16 de diciembre de 2014 .
- ↑ "Piénselo dos veces antes de adoptar la API commons-logging"
- ↑ "Taxonomía de los problemas del cargador de clases que se presentan al usar Jakarta Commons Logging"
- ↑ "Analizamos 30.000 proyectos de GitHub: estas son las 100 mejores bibliotecas en Java, JS y Ruby" . Archivado del original el 9 de julio de 2014. Consultado el 9 de febrero de 2014 .
- ↑ Nicolas, Frenkel. "Sección "más popular" . Twitter . Consultado el 16 de enero de 2022 .
- ↑ Documentación de la API de SLF4J: Registrador
- ↑ Enlace slf4j de Apache log4j 2.x
- ↑ "Noticias de SLF4J" . www.slf4j.org . Consultado el 25 de febrero de 2025 .
Enlaces externos
- Bibliotecas de Java (lenguaje de programación)
- Software que utiliza la licencia MIT.
- formatos de archivos de registro