Tôi đã tìm thấy a useful article giải thích cách làm cho Jersey sử dụng SLF4J thay vì JUL. Bây giờ kiểm tra đơn vị của tôi trông như thế (và nó hoạt động hoàn hảo):Làm sao để Jersey sử dụng SLF4J thay vì 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 {
// ...
}
}
pom.xml
của tôi bao gồm những phụ thuộc:
<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>
Nó hoạt động hoàn hảo, nhưng tôi không muốn làm cho cấu hình tương tự trong mỗi kiểm tra đơn vị. Đó là một bản sao mã rõ ràng, mà tôi muốn tránh. Làm thế nào tôi có thể làm điều này hiệu quả hơn?
ps. Có lẽ không thể tối ưu hóa mã ở trên và tôi đang làm hết sức mình có thể?
Chỉ cần tăng cường cho bạn initLogger(), bạn có thể sử dụng điều này: SLF4JBridgeHandler.removeHandlersForRootLogger(); java.util.logging.LogManager.getLogManager(). Reset(); SLF4JBridgeHandler.install(); – amgohan