Loggear request y response con spring en kotlin

By | 02/04/2025

Necesitaba loggear el body del request recibido y el body del response retornado por una serie de controllers en una aplicación hecha con kotlin y Spring, y me encontré con que no hay mucha documentación al respecto, lo que dio inicio a este artículo.

Si bien spring nos deja acceder al request fácilmente, inyectando el parámetro al controller, la mayor dificultad con la que nos vamos a topar es que el request solamente lo vamos a poder leer 1 vez. Para salvar esta dificultad vamos a usar las clases ContentCachingRequestWrapper y ContentCachingResponseWrapper, que van a envolver el request original y van a cachear el contenido.

ContentCachingRequestWrapper solamente va a tener disponible el body una vez que este se haya leído, y a partir de ese momento se podrá acceder las veces que sea necesario. Para esto nos tenemos que asegurar que al momento de acceder a su body alguien (spring) haya leído el request.

Para lograr esto nos vamos a valer de un Filter, con el que vamos a insertar nuestros wrappers en medio de la cadena de ejecución.

Ver ejemplo completo: https://github.com/emilianotebes/spring-log-request-response-demo

La clase principal es LoggingFilter:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *