Simple Logging Facade para 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 , logback [3] o tinylog. [4] [5]
Desarrollador (es) | Ceki Gülcü |
---|---|
Lanzamiento estable | 1.7.30 / 16 de diciembre de 2019 [1] |
Repositorio | |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Herramienta de registro |
Licencia | Licencia MIT |
Sitio web | www |
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 entregar código a otros proyectos que ya han elegido el backend de registro.
SLF4J fue creado por Ceki Gülcü como una alternativa más confiable al marco de registro de Jakarta Commons. [6] [7] La investigación en 2013 sobre 10,000 proyectos de GitHub encontró que la biblioteca de Java más popular es SLF4J, junto con JUnit , con un 30,7% de los proyectos que la utilizan. [8]
Similitudes y diferencias con log4j 1.x
- Se utilizan cinco de los seis niveles de registro de log4j (ERROR, WARN, INFO, DEBUG, TRACE). FATAL se ha descartado sobre la base de que dentro del marco de registro no es el lugar para decidir cuándo debe terminar 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 declaraciones de registro. Por ejemplo, cualquier declaración de registro de nivel ERROR puede etiquetarse con el marcador "FATAL".
- Las instancias de registrador se crean a través de
LoggerFactory
, que es muy similar en log4j. Por ejemplo,Logger final estático privado LOG = LoggerFactory . getLogger ( clase Wombat . );
- En Logger , los métodos de registro están sobrecargados con formularios que aceptan uno, dos o más valores. [9] 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 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 o construir una cadena de mensaje de registro que nunca se registra realmente. En el siguiente ejemplo, la concatenación de cadenas y eltoString()
método para los valorescount
ouserAccountList
se realizan solo cuando DEBUG está habilitado.
LOG . debug ( "Ahora hay" + count + "cuentas de usuario:" + userAccountList ); // LOG más lento . debug ( "Ahora hay {} cuentas de usuario: {}" , count , userAccountList ); // más rápido
- Existen métodos similares en Logger para
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 el 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, el logback es el único marco que utiliza marcadores.
Similitudes y diferencias con log4j 2.x
Apache log4j 2.x es compatible con todas las funciones de slf4j. [10]
Historial de versiones
Versión 2
La versión 2 está actualmente en desarrollo, con una versión preliminar alfa disponible . Requiere Java 8 o posterior.
Adiciones de características significativas:
- Soporte para la sintaxis lambda en el paso de mensajes que se registrarán.
- API fluida .
Versión 1
Los detalles de la versión se pueden encontrar en el manual .
Las versiones importantes incluyen:
- La versión 1.7.30 es la versión estable actual. Consulte la página Descargar 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 que se usa de forma predeterminada si no se encuentra un enlace.
- Los lanzamientos de la versión 1.1 en los repositorios de Maven comenzaron en 2006-09 .
Ver también
Referencias
- ^ "Noticias SLF4J" . slfj4.org . 2019-12-16.
- ^ java.util.logging
- ^ logback
- ^ tinylog
- ^ Enlace SLF4J para tinylog
- ^ "Piénselo de nuevo antes de adoptar la API de registro común"
- ^ "Taxonomía de los problemas del cargador de clases encontrados al utilizar el registro de Jakarta Commons"
- ^ "Analizamos 30.000 proyectos de GitHub: aquí están las 100 mejores bibliotecas en Java, JS y Ruby" .
- ^ Documentos de la API de SLF4J: Logger
- ^ Enlace Apache log4j 2.x slf4j
enlaces externos
- Página web oficial