Регистрация входящего и исходящего HTTP-запроса REST / ответа в Spring/Tomcat
У меня есть служба Spring REST, и иногда, когда я запрашиваю службу REST, я получаю HTTP 401. Я ищу, чтобы исследовать эту проблему, это периодически и не происходит постоянно. (Это один и тот же запрос, который я отправляю каждый раз). У меня также есть интегрированный Swagger для предоставления документации REST. Я развертываю свои весенние REST-сервисы как веб-приложение для Tomcat 7.
Как я могу регистрировать входящие и исходящие запросы HTTP, даже если запрос является запросом без аутентификации. Я хочу иметь возможность связать ВСЕ входящий запрос и соответствующий исходящий ответ. Это то, что я хотел бы развернуть и в производственном приложении.
Какие передовые практики я могу использовать в плане ведения журнала для служб REST в Spring, какие функции, которые я могу использовать, которые предлагает Spring или Tomcat для улучшения ведения журнала и исследования?
Спасибо
1 ответ
Возможно, лучший способ сделать это - использовать Logging framework
в сочетании с обычаем javax.servlet.Filter
, Он может отслеживать все HTTP-запросы / ответы отдельно от другой среды, которую вы используете в своем приложении (например, Spring MVC или Struts).
Важно, что в этом случае ведение журнала должно работать отдельно от других частей приложения, потому что в противном случае оно будет зависеть от некоторых компонентов и не будет отражать реальные события низкого уровня, как есть, или может быть вообще нарушено.
Я могу посоветовать вам использовать Logback, поскольку он имеет готовые компоненты, которые могут делать то, что вы хотите.
С Logback
Конфигурация вашего веб-приложения может выглядеть следующим образом:
web.xml
<filter>
<filter-name>TeeFilter</filter-name>
<filter-class>ch.qos.logback.access.servlet.TeeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TeeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Более подробную информацию можно найти в документации Logback.