2014-09-18 2 views
4

누구나 파일에서 HttpRequest 및 HttpResponse를 기록하는 기술을 설명 할 수 있습니까?파일에서 HttpRequest 및 HttpResponse를 기록하는 방법은 무엇입니까?

우리는 Spring MVC/Spring Rest를 사용하고 있습니다.

우리가 원하는 것은 처리되기 전에 요청을 가로 채어 기록하는 것입니다. 응답을 전송하기 전에 응답을 가로 채서 로그를 남기고 기록하십시오.

미리 감사드립니다.

+1

요청을 로깅을 위해 당신은 ['AbstractRequestLoggingFilter']의 서브 클래스 중 하나 (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/를 추가 할 수 있습니다 filter/AbstractRequestLoggingFilter.html)을 필터 체인에 추가하십시오. –

+0

고마워요. –

+0

@M. Deinum : 대답을 대답으로 게시 하시겠습니까? – Ralph

답변

7

요청에 대한 로깅의 경우 Spring은 AbstractRequestLoggingFilter 클래스 (실제로는 서브 클래스 중 하나)를가집니다. 들어오는 요청 (처리 전후)을 기록하는 데 사용할 수 있습니다.

구성에 따라 페이로드, 클라이언트 정보 및 전체 URL (erquest 매개 변수 포함)이 포함될 수 있습니다. 이 세 가지 모두 기본적으로 비활성화되어 있지만 구성을 통해 활성화 할 수 있습니다 (자세한 내용은 javadoc을 참조하십시오).

<filter> 
    <filter-name>requestLoggingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CommonsRequestLoggingFilter</filter-class> 
    <init-param> 
     <param-name>includeClientInfo</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>includePayload</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>includeQueryString</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>requestLoggingFilter</filter-name> 
    <servlet-name>dispatcherServlet</servlet-name> 
</filter-mapping> 

필터는 이제 Commons Logging logger를 사용하여 모든 것을 로그 파일에 기록합니다.

5

허용되는 답변은 이미 정확하고 주석 기반 구성을 추가합니다. 다음 Bean을 설정에 추가하십시오.

@Bean 
public CommonsRequestLoggingFilter requestLoggingFilter() { 
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter(); 
    loggingFilter.setIncludeClientInfo(true); 
    loggingFilter.setIncludeQueryString(true); 
    loggingFilter.setIncludePayload(true); 
    return loggingFilter; 
} 
관련 문제