2012-05-10 2 views
0

아파치를 얻으려고합니다 httpclient는 groovy의 HTTPBuilder의 RESTClient에 대한 콘솔에 기록합니다. 나는 standard instructionsthisthis과 같은 다른 제안을 포함하여 다양한 방법을 시도했지만 아무 소용이 없습니다.Commons logging (httpbuilder에 의한)을 통해 로그 된 메시지를 Logback에 보내십시오.

마지막으로 많은 격려 끝에이 SO question의 도움을 받았으며 깨끗한 해결책은 아니지만 이제는 작업이 완료됩니다. 이제 전선 로그를 얻습니다.

// test.groovy 
import groovyx.net.http.RESTClient 

import java.util.logging.ConsoleHandler 
import java.util.logging.Level 
import java.util.logging.Logger 

// Remove default loggers 
def logger=Logger.getLogger('') 
def handlers=logger.handlers 
handlers.each() { handler->logger.removeHandler(handler) } 

// Log ALL to Console 
logger.setLevel Level.FINE 
def consoleHandler=new ConsoleHandler() 
consoleHandler.setLevel Level.FINE 
logger.addHandler(consoleHandler) 

def myclient = new RESTClient('https://www.google.com/search') 

def resp = myclient.get(queryString: 'q=httpclient') 

이제 유일한 문제는 내 응용 프로그램의 나머지 부분은 이미 logback 사용하고 있기 때문에 나는이에 대한 java.util.logging의 대신 logback 사용할 것입니다 :

는 여기에 몇 가지 예제 코드입니다.

지금은 위의 해당 logback.groovy 구성을 얻기 위해 노력하고 있어요,하지만 그것은 작동하지 않습니다

// logback.groovy 
appender("CONSOLE", ConsoleAppender) 
{ 
    encoder(PatternLayoutEncoder) 
    { 
     pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" 
    } 
} 


root DEBUG, ["CONSOLE"] 

logger "groovyx.net.http.HttpURLClient", DEBUG, ["CONSOLE"] 
logger "org.apache.http", DEBUG, ["CONSOLE"] 
logger "org.apache.http.headers", DEBUG, ["CONSOLE"] 
logger "org.apache.http.wire", DEBUG, ["CONSOLE"] 

내가 어떤 아파치 헤더 또는 아파치 와이어 로그를 받고 있지 않다. Logback (및 log4j 및 slf4j 및 java.util.Logging)에 대한 새로운 기능이므로 도움을 주시면 감사하겠습니다.

+0

나는 두렵다. 나는 그 질문을 이해하지 못한다. – Ceki

+0

logback에서이 java.util.logging 기능 (위에서 설명한 실제 코드)을 수행 할 수 있기를 원합니다. // 기본 로거를 제거하십시오 ... // 콘솔에 ALL을 기록하십시오. [ – noumenon

+0

참고 : [이 질문에 대한 대답입니다. ] (https://stackoverflow.com/a/20407321/1078886) JUL (java.util.logging)을 Logback으로 보내는 방법에 관한 내용입니다. (이 경우 기본 문제는 _commons logging_을 Logback에 보내므로 복제). –

답변

2

라이브러리되기 HttpClient는 사용자가 사용해야하는 로깅 프레임 워크를 지정하지 않습니다. 따라서 HttpClient는 Commons Logging 패키지가 제공하는 로깅 인터페이스를 사용합니다.

SLF4j 처리기를 통해 JCL 활동을 처리하려면 JCL에서 SLF4j 로의 다리를 사용해야합니다. http://www.slf4j.org/legacy.html#jcl-over-slf4j

+0

이것은 나를 위해 일했습니다. 'org.slf4j : jcl-over-slf4j : 1.7.13'또는 최신/호환 버전이 무엇이든지간에 종속성을 추가하기 만하면됩니다. – Mikezx6r