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>