He encontrado a useful article que explica cómo hacer que Jersey use SLF4J en lugar de JUL. Ahora mi unidad de prueba se parece (y funciona perfectamente):¿Cómo hacer que Jersey use SLF4J en lugar de JUL?
public class FooTest extends JerseyTest {
@BeforeClass
public static void initLogger() {
java.util.logging.Logger rootLogger =
java.util.logging.LogManager.getLogManager().getLogger("");
java.util.logging.Handler[] handlers = rootLogger.getHandlers();
for (int i = 0; i < handlers.length; i++) {
rootLogger.removeHandler(handlers[i]);
}
org.slf4j.bridge.SLF4JBridgeHandler.install();
}
public FooTest() {
super("com.XXX");
}
@Test
public void testSomething() throws Exception {
// ...
}
}
Mi pom.xml
incluye las siguientes dependencias:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
Funciona perfectamente, pero no quiero hacer la misma configuración en todos prueba de unidad. Es una duplicación de código obvia, que me gustaría evitar. ¿Cómo puedo hacer esto de manera más efectiva?
ps. Tal vez no es posible optimizar el código anterior y estoy haciendo lo mejor que puedo?
Simplemente una mejora para usted initLogger(), puede usar esto: SLF4JBridgeHandler.removeHandlersForRootLogger(); java.util.logging.LogManager.getLogManager(). Reset(); SLF4JBridgeHandler.install(); – amgohan