2014-12-08 1 views
1

dropwizard의 각 요청과 응답을 다른 파일에 기록하고 싶습니다. 예를 들어 나는 모든 요청이 /var/log/applicationname-request.log에 로그인하고 /var/log/applicationname-response.log드롭 마법사 요청 응답 로깅

에 모든 응답은 어떤 방법이 있나요 원하는 우리 같은 것을 얻을 수 있습니까?

답변

3

불행히도 DropWizard는 현재 기본적으로이 기능을 지원하지 않습니다. 자세한 내용은 this lively discussion을 참조하십시오.

다행히 DropWizard로 로깅을 구성하지 않으려는 경우 해결 방법이 있습니다.

<configuration> 
    <appender name="REQUEST" class="ch.qos.logback.core.FileAppender"> 
    <file>/var/log/applicationname-request.log</file> 
    <append>false</append> 
    <encoder> 
     <pattern>%-5relative %-5level %logger{35} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="RESPONSE" class="ch.qos.logback.core.FileAppender"> 
    <file>/var/log/applicationame-response.log</file> 
    <append>false</append> 
    <encoder> 
     <pattern>%-5relative %-5level %logger{35} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <logger name="org.example.request"> 
    <level value="DEBUG" /> 
    <appender-ref ref="REQUEST" /> 
    </logger> 

    <logger name="org.example.response"> 
    <level value="DEBUG" /> 
    <appender-ref ref="RESPONSE" /> 
    </logger> 

    <root level="warn"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 
: 클래스 패스에 logback.xml을 추가하고 그것을 이런 식으로 뭔가를 구성하여

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory(); 
context.reset(); 
ContextInitializer initializer = new ContextInitializer(context); 
initializer.autoConfig(); 

그런 다음 로깅을 구성 할 수 있습니다 어딘가에 당신의 run 방법에 로깅을 재설정하고 sfl4j의 표준 메커니즘을 사용하여 다시 구성하려면 다음 코드를 호출

그런 다음 당신은 당신의 자원에 그 해당 로거를 잡고 멀리 로그인 할 수 있습니다 :

static final Logger REQUEST_LOG = LoggerFactory.getLogger("org.example.request"); 
static final Logger RESPONSE_LOG = LoggerFactory.getLogger("org.example.response"); 
+0

감사합니다, 그것의 작업 F를 이런 식으로. 이 로거를 드롭 마법사 구성으로 바인딩 할 수 있습니까? 그래서, 드롭 마법사는 내부 로깅을 위해 이것을 사용할 수 있습니다. –

+0

로깅을 다시 초기화 할 때 손실 될 수 있기 때문에 DropWizard 구성에서이 로거를 설정할 수 없을 것이라고 생각합니다. 하지만 Logback.xml의 DropWizard 클래스에 대해 별도의 로거를 추가 할 수 있습니다. – condit

+0

@condit 구형이라고 생각합니다 ... 그렇습니까? – OskarD90