2012-04-24 5 views
2

OSGi (Karaf) 내의 Jersey를 사용하여 요청/응답 정보를 보는 데 문제가 있습니다. 분명히 Jersey는 JUL 로깅을 사용하므로 SLF4J 로깅에 연결되어야합니다. 나는 다음과 같은 코드를 사용하여이 작업을 수행 :OSGi에서 SLF4J를 사용하여 저지 로깅

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(); 

을 지금은 OSGi HttpService를 가진 뉴저지 서블릿을 등록, 나는이 사용 그래서 (내가 서블릿을 공격 할 때

Dictionary<String, String> initParams = new Hashtable<String, String>(); 
initParams.put("com.sun.ws.rest.config.property.resourceConfigClass", "com.sun.ws.rest.api.core.PackagesResourceConfig"); 
initParams.put("com.sun.ws.rest.config.property.packages","jersey_osgi.rest"); 

initParams.put("com.sun.jersey.spi.container.ContainerRequestFilters", 
"com.sun.jersey.api.container.filter.LoggingFilter"); 
initParams.put("com.sun.jersey.spi.container.ContainerResponseFilters", 
"com.sun.jersey.api.container.filter.LoggingFilter"); 

osgiHttpService.registerServlet("/", servlet, initParams, null); 

, 내가 예상되는 응답을받을를 모든 것이 작동하고있는 것처럼 보입니다.)하지만 요청/응답이 방금 만들어진 내용을 알려주는 로그 항목은 없습니다. 로깅 수준은 INFO로 설정됩니다.

답변

0

정적 필드에 루트 로거를 저장하십시오. "java util logging"의 Logger은 일반적으로 소프트 참조로 저장되므로 사용하기 전에 SLF4J 구성된 핸들러가 가비지 수집 될 수 있습니다.

+0

나는 이것을 시도했지만 작동하지 않았다. 여전히 로그에 요청/응답 정보가 없습니다. – Oleksi

관련 문제