Предупреждение о остановке журнала RestTemplate на 404 не найдено

У нас есть сервисная платформа, где возможно (/common) отсутствие ресурса - например. вызов нашего модуля безопасности с неправильным именем пользователя вернет 404 Not Found, что будет происходить каждый раз, когда пользователь делает опечатку в своем поле входа.

Мы используем Spring RestTemplate для этих вызовов, и это здорово, но каждый раз, когда встречается ошибка 404, он добросовестно регистрирует предупреждение, которое засоряет наши журналы.

Мы, очевидно, не хотим подавлять предупреждения, за исключением конкретного случая 404 not found, но, похоже, нет способа сделать это (логгер является закрытым/финальным, метод для его вызова является закрытым и т. д.).

Наше решение не очень хорошее — возвращать 200/OK с пустым набором данных и обрабатывать нулевой указатель, что одновременно и неприятно, и не является хорошей спокойной реализацией.

Кто-нибудь знает лучший способ сделать это?


person user1016765    schedule 22.11.2013    source источник


Ответы (3)


Как насчет использования фильтра RegexFilter в приложении для ведения журнала?

http://logging.apache.org/log4j/2.x/manual/filters.html#RegexFilter

... это способ Log4J, но я предполагаю, что должны быть аналогичные фильтры для других библиотек журналов.

person Steve    schedule 22.11.2013

Реализуйте ResponseErrorHandler, который возвращает false для hasError().

Назначьте его вашему оставшемуся шаблону, используя setErrorHandler().

Предупреждение не будет зарегистрировано.

person Ted Bigham    schedule 27.08.2014

Это было зарегистрировано как issue SPR-12760 в средстве отслеживания проблем Spring Framework и решено ранее. в этом году (2015) в версии 4.1.6. Решение было двояким: во-первых, предупреждающее сообщение было понижено до сообщения об отладке, а во-вторых, стало проще переопределять часть кода, отвечающую за обработку ошибок. Поэтому в качестве решения вашей проблемы обновите org.springframework:spring-web module как минимум до версии 4.1.6.РЕЛИЗ.

person ZeroOne    schedule 10.06.2015