logo

Log4j y SLF4J

SLF4J (Fachada de registro simple para Java) es una API diseñada para brindar acceso genérico a muchos marcos de registro, siendo log4j uno de ellos.

Es básicamente una capa de abstracción. No es una implementación de registro. Significa que si está escribiendo una biblioteca y usa SLF4J, puede darle esa biblioteca a otra persona para que la use y ellos pueden elegir qué implementación de registro usar con SLF4J, por ejemplo, log4j o la API de registro de Java. Se utiliza para evitar que las aplicaciones dependan de diferentes API de registro del mismo modo que utilizan bibliotecas que dependen de ellas.

Sin embargo, elaboramos la diferencia entre Log4J y SLF4J que merece solo una respuesta de una línea. es decir, la pregunta en sí es incorrecta. SLF4J y Log4J son diferentes o no son componentes similares. Como su nombre lo especifica, SLF4J es una fachada de registro simple para Java. No es un componente de registro y ni siquiera realiza el registro real. Es sólo una capa de abstracción para un componente de registro subyacente.

actor shweta tiwari

En el caso de Log4j , es un componente de registro y realiza el registro que se le indica. Entonces podemos decir que SLF4J y Log4J son lógicamente dos cosas diferentes.

Log4j y SLF4J

Ahora, todo lo que tiene que hacer es seleccionar qué marco de registro necesita usar en tiempo de ejecución. Para eso, necesitarás incluir dos archivos jar:

recorrido del árbol en orden
  • Archivo jar de enlace SLF4J
  • Archivos jar del marco de registro deseado

Por ejemplo, para usar log4j en su proyecto, deberá incluir los archivos jar que se detallan a continuación:

  • slf4j-log4j12-1.7.12.jar
  • log4j-1.2.17.jar

Una vez que haya colocado ambos archivos jar en la ruta de clases de su aplicación, SLF4J los detectará automáticamente y comenzará a usar log4j para procesar las declaraciones de registro según la configuración que proporcionó en el archivo de configuración log4j.

Por ejemplo, el siguiente código puede escribir en el archivo de clase de su proyecto:

 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info('Hello World'); } } 

¿Por qué SLF4J es mejor que Log4J?

Siempre es difícil preferir uno entre SLF4J y Log4j. Si tienes opción, te sugiero; la abstracción de registro siempre es preferible al marco de registro. Si utiliza una abstracción de registro, SLF4J en particular, podemos migrar a cualquier marco de registro que necesitemos en el momento de la implementación sin optar por una dependencia única.

java agregando a una matriz

Las siguientes son las razones que son suficientes para elegir SLF4J en lugar de Log4j:

  • Siempre es mejor utilizar la abstracción.
  • SLF4J es una biblioteca de código abierto o una biblioteca interna que la hace independiente de cualquier implementación de registro en particular, lo que significa que no es necesario administrar múltiples configuraciones de registro para múltiples bibliotecas.
  • SLF4J proporciona registro basado en marcadores de posición, lo que mejora la legibilidad del código al eliminar comprobaciones como isInforEnabled(), isDebugEnabled(), etc.
  • Al utilizar el método de registro de SLF4J, aplazamos el costo de construir mensajes de registro (cadena), hasta que lo necesite, lo que es eficiente tanto en CPU como en memoria.
  • Dado que SLF4J utiliza una menor cantidad de cadenas temporales, significa menos trabajo para el recolector de basura, lo que significa un mejor rendimiento y rendimiento para su aplicación.

Básicamente, SLF4J no reemplaza a log4j; ambos trabajan juntos. Elimina la dependencia de log4j de su aplicación y facilita su reemplazo en el futuro con la biblioteca más capaz.