sl4j org name logger log how java logging slf4j

org - ¿Enviar/redirigir/enrutar java.util.logging.Logger(JUL) a Logback usando SLF4J?



slf4j logger jar (1)

¿Es posible tener una llamada típica a java.util.logging.Logger y hacer que se dirija a Logback usando SLF4J? Esto sería bueno ya que no tendría que refactorizar el antiguo código de julio línea por línea.

Por ejemplo, digamos que tenemos esta línea:

private static Logger logger = Logger.getLogger(MahClass.class.getName()); //... logger.info("blah blah blah");

Sería bueno configurar esto para llamar a través de SLF4J.


Es muy fácil y ya no es un problema de rendimiento.

Hay dos formas documentadas en el manual de SLF4J . También hay ejemplos precisos en los Javadocs

Agregue jul-to-slf4j.jar a su classpath. O a través de la dependencia maven:

<dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.0</version> </dependency>

Si no tiene logging.properties (para java.util.logging), agregue esto a su código de rutina de carga:

SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install();

Si tiene logging.properties (y desea conservarlo), agréguelo a esto:

handlers = org.slf4j.bridge.SLF4JBridgeHandler

Para evitar una penalización de rendimiento, agregue este contextListener a logback.xml (a partir de la versión de logback 0.9.25):

<?xml version="1.0" encoding="UTF-8"?> <configuration> <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> <!-- reset all previous level configurations of all j.u.l. loggers --> <resetJUL>true</resetJUL> </contextListener> ... </configuration>