simple org logger example java logging log4j apache-commons slf4j

java - org - slf4j vs log4j



Registro usando SL4J, registro de Jakarta Commons, log4j para bibliotecas de terceros y mi propio código (2)

Aquí está cómo redirigir todo a SLF4J:

  • eliminar commons-logging.jar de su classpath. Si está utilizando Maven y tiene problemas para deshacerse del registro de uso común, vea esto .

  • ponga jcl-over-slf4j.jar en su classpath (viene en la distribución SLF4J). Este es un reemplazo directo que imita las clases de JCL, pero llama a SLF4J internamente. Esto se ocupará de Spring y de cualquier otro framework que use JCL.

Conecte SLF4J a su servidor favorito (Log4J, Logback ...) poniendo slf4j-xxx.jar en classpath. Configure el backend para registrar todas las categorías en un archivo, y listo.

En cuanto a usar SLF4J en su aplicación, no es estrictamente necesario. Las bibliotecas como JCL y SLF4J se diseñaron originalmente para personas que escriben bibliotecas y no desean encerrar a sus clientes en un marco de registro particular.

PD: por cierto, JCL = Jakarta Commons Logging

Tengo algunas preguntas sobre el registro, más específicamente sobre configurarlo y asegurarme de que funciona.

El proyecto que estoy haciendo usará Wicket , Spring e Hibernate . Sé que Wicket e Hibernate usan Simple Logging Facade para Java ( SL4J ) y que Spring está usando el componente de registro de Apache Commons .

¿Co-existirán felizmente? Pensé que usaría log4j junto con SL4J y el componente de registro de Apache commons, ¿cree que es una buena idea?

¿Puedo configurarlos todos para generar datos de registro en un archivo común? ¿O debería usar archivos separados? ¿O debería almacenar los mensajes de registro en la base de datos? (Prefiero no hacerlo, ya que encuentro grepping, etc en archivos de texto bastante conveniente.)

Para Spring supongo que necesito algún tipo de archivo de configuración para el componente de registro de Apache Commons, así como también lo dirijo para usar log4j.

Cuando configuré esto, supongo que para ver que todo funciona, configuré el nivel de registro en INFO, ya que es bastante cierto que los tres marcos generan información en ese modo. ¿O hay una forma aún mejor de asegurarse?

Y mi última pregunta. En el proyecto que estoy comenzando, ¿me recomiendan que use SL4J para mis propios fines de registro? (Pensé que usaría log4j directamente, pero eso fue antes de aprender un poco más sobre la explotación forestal y muchas bibliotecas respetables parecen elegir el camino de un puente / fachada para sus necesidades de registro. Y si nos da flexibilidad sin agregar costo no hay razón para no hacerlo de esa manera.)

Estoy ansioso por saber más de usted acerca de cómo está haciendo su registro. Es un área nueva para mí en la que estoy ansioso por mejorar.


Bueno, SLF4J es solo una fachada, como el registro de áreas comunes, lo que significa que todavía necesitan algo más para funcionar. Permiten que los autores de la biblioteca no obliguen a los usuarios a tener múltiples bibliotecas y configuraciones de registro. Log4j y logback son libs de registro regulares.

Mira aquí para más información.

SLF4J tiene un puente de registro de commons que puede usar para reemplazar la biblioteca de registro de commons. Creo que el esquema allí explica la situación muy bien.

Ahora, solo necesita usar slf4j-logj12.jar para tener el registro de commons y slf4j usar log4j (o cualquier otra cosa que elija; btw, logback no necesita una biblioteca adicional para ser utilizado con slf4j) como motor de respaldo.

Su aplicación tendrá así

  • jcl104-over-slf4j.jar (para puentear el registro de commons de jakarta a slf4j)
  • slf4j.jar (para hibernate y otros para usar slf4j)
  • slf4j-logj12.jar (para que slf4j use log4j como back-end)
  • log4j.jar (para que su aplicación lo use, todas las configuraciones también se harán aquí)