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 a la ruta de clase 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 backend de registro reduce el acoplamiento entre una aplicación y cualquier marco de registro en particular. Esto puede facilitar la integración con código existente o de terceros o la entrega de código a otros proyectos que ya han elegido un backend de registro.
SLF4J fue creado por Ceki Gülcü como una alternativa más confiable al marco de trabajo de registro de Jakarta Commons. [6] [7] Una investigación realizada en 2013 sobre 10 000 proyectos de GitHub descubrió que la biblioteca Java más popular es SLF4J, junto con JUnit , con un 30,7 % de proyectos que la utilizan. [8] En enero de 2021, se clasificó 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 el marco de registro no es el lugar para decidir cuándo debe finalizar una aplicación y, por lo tanto, no hay diferencia entre ERROR y FATAL desde el punto de vista del registrador. Además, los marcadores SLF4J ofrecen un método más general para etiquetar las declaraciones de registro. Por ejemplo, cualquier declaración de registro de nivel ERROR se puede etiquetar con el marcador "FATAL".
- Las instancias de registrador se crean a través de
LoggerFactory
, que es muy similar en log4j. Por ejemplo, privado estático final Logger LOG = LoggerFactory . getLogger ( Wombat . class );
- En Logger , los métodos de registro están sobrecargados con formatos que aceptan uno, dos o más valores. [10] Las apariciones del patrón simple
{}
en el mensaje de registro se reemplazan a su vez con los valores. Esto es fácil de usar pero proporciona un beneficio de rendimiento cuando los valores tienen toString()
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 o construir una cadena de mensaje de registro que en realidad nunca se registra. En el siguiente ejemplo, la concatenación de cadenas y toString()
el método para los valores count
o userAccountList
se 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
- Existen métodos similares en Logger ,
isDebugEnabled()
etc. para permitir que las llamadas de registro más complejas se envuelvan de modo que se deshabiliten cuando se deshabilite 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. En la actualidad, logback es el único marco que utiliza marcadores.
Similitudes y diferencias con log4j 2.x
Apache log4j 2.x admite todas las funciones de slf4j. [11]
Historial de versiones
Versión 2
La versión 2.0.0 se lanzó el 20 de agosto de 2022. La última versión 2 es la 2.0.9 (3 de septiembre de 2023). [12]
Cambios significativos y nuevas funciones:
Versión 1
Los detalles de la versión se pueden encontrar en el manual.
Las versiones significativas incluyen:
- La versión 1.7.36 y todas las versiones más nuevas son reproducibles .
- Versión 1.7.35 El módulo slf4j-log4j12 se reemplaza por slf4j-reload4j.
- La versión 1.7.33 agrega compatibilidad con reload4j a través del 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 agregó soporte para varargs, lo que requiere soporte para Java 5 o posterior.
- La versión 1.6 trajo una implementación sin operación utilizada de manera predeterminada si no se encuentra ningún enlace.
- Los lanzamientos de la versión 1.1 en los repositorios Maven comenzaron entre 2006 y 2009.
Véase también
Referencias
- ^ "Noticias de SLF4J". slfj4.org . 2023-09-03.
- ^ java.util.logging
- ^ volver a iniciar sesión
- ^ pequeño registro
- ^ "Enlace SLF4J para tinylog". Archivado desde el original el 7 de diciembre de 2017. Consultado el 16 de diciembre de 2014 .
- ^ "Piénselo dos veces antes de adoptar la API de registro de bienes comunes"
- ^ "Taxonomía de los problemas del cargador de clases encontrados al utilizar Jakarta Commons Logging"
- ^ "Analizamos 30.000 proyectos de GitHub: estas son las 100 mejores bibliotecas de Java, JS y Ruby". Archivado desde el 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 de Apache log4j 2.x slf4j
- ^ "Noticias de SLF4J". www.slf4j.org . Consultado el 27 de noviembre de 2023 .
Enlaces externos