2014-09-18 5 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, в файле журнала.

5

Принимаемый ответ уже правильный, добавив настройку на основе аннотаций. Добавьте в конфигурацию следующий bean-компонент.

@Bean 
public CommonsRequestLoggingFilter requestLoggingFilter() { 
    CommonsRequestLoggingFilter loggingFilter = new CommonsRequestLoggingFilter(); 
    loggingFilter.setIncludeClientInfo(true); 
    loggingFilter.setIncludeQueryString(true); 
    loggingFilter.setIncludePayload(true); 
    return loggingFilter; 
} 
Смежные вопросы