Я нашел a useful article, в котором объясняется, как заставить Джерси использовать SLF4J вместо JUL. Теперь мой блок тест выглядит (и это работает отлично):Как заставить Джерси использовать SLF4J вместо 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 {
// ...
}
}
My pom.xml
включает в себя следующие зависимости:
<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>
Он отлично работает, но я не хочу, чтобы сделать ту же самую конфигурацию в каждом модульный тест. Это очевидное дублирование кода, которое я бы хотел избежать. Как я могу сделать это более эффективно?
пс. Может быть, невозможно оптимизировать код выше, и я делаю все, что могу?
Простое дополнение к вам initLogger(), вы можете использовать это: SLF4JBridgeHandler.removeHandlersForRootLogger(); java.util.logging.LogManager.getLogManager(). Reset(); SLF4JBridgeHandler.install(); – amgohan