Встречается на собеседованиях • сегодня
Как организуешь логирование тела запроса при приеме его контроллером
Для логирования тела запроса в Spring Boot можно использовать фильтры или аспекты. Лучший подход - кастомный OncePerRequestFilter:
java
@Component
public class RequestLoggingFilter extends OncePerRequestFilter {
private static final Logger logger = LoggerFactory.getLogger(RequestLoggingFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
ContentCachingRequestWrapper wrappedRequest = new ContentCachingRequestWrapper(request);
filterChain.doFilter(wrappedRequest, response);
byte[] buf = wrappedRequest.getContentAsByteArray();
if (buf.length > 0) {
String body = new String(buf, request.getCharacterEncoding());
logger.info("Request body: {}", body);
}
}
}Важные моменты:
- Используем
ContentCachingRequestWrapperдля многократного чтения тела - Логируем только после выполнения цепочки фильтров
- Проверяем длину буфера, чтобы избежать лишнего создания строк
- Для прода лучше добавить ограничение на размер лога и маскировку чувствительных данных

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы