Как получить (не) упорядоченное сообщение для ведения журнала

#java #spring #spring-mvc #servlet-filters #xstream

#java #весна #spring-mvc #сервлет-фильтры #xstream

Вопрос:

У меня есть служба Spring MVC REST, которая использует XStream для преобразования сообщений в XML и из него.

Могу ли я каким-либо образом распечатать xml (т. Е. Тело) из запроса и ответа на обычный log4j logger?

Внутри контроллера не будет работать, потому что к тому времени XStream уже прочитал отмененный запрос и еще не отправил ответ.

Фильтр в сервлете тоже не очень хорош, поскольку он будет потреблять тело, читая его.

И вот тут у меня заканчиваются идеи if. Итак, ИТАК? Есть желающие? 🙂

Ответ №1:

Вы можете использовать перехватчик для регистрации содержимого вашего запроса и ответа, поступающего в ваш конкретный rest uri — подробнее здесь

Комментарии:

1. Я попробую еще завтра, но разве запрос / ответ не просто передается внутри? Если это так, я не могу их прочитать, не уничтожив их.

2. Вы правы @Andreas, перехватчик не будет работать. Я вижу здесь один метод — wetfeetblog.com /… , который потребляет поток, но затем заменяет HttpRequest и HttpResponse адаптированной версией, при этом запрос и ответ внутренне буферизуются.

3. Да, я видел такие решения. Spring даже имеет это внутренне в своем AbstractRequestLoggingFilter, хотя я думаю, что это плохая и ошибочная реализация.

4. Я награждаю за это решение. Моей единственной реальной идеей было сделать так, как это делает wetfeetblog, но я не нашел эту ссылку, и я боюсь, что не получу лучшего решения.