Cómo registrar cuerpos de solicitud y respuesta en Spring WebFlux

Quiero tener un registro centralizado de solicitudes y respuestas en mi API REST en Spring WebFlux con Kotlin. Hasta ahora he intentado este enfoque

@Bean
fun apiRouter() = router {
    (accept(MediaType.APPLICATION_JSON) and "/api").nest {
        "/user".nest {
            GET("/", userHandler::listUsers)
            POST("/{userId}", userHandler::updateUser)
        }
    }
}.filter { request, next ->
    logger.info { "Processing request $request with body ${request.bodyToMono<String>()}" }
    next.handle(request).doOnSuccess { logger.info { "Handling with response $it" } }
}

Aquí solicite el método y el registro de ruta con éxito, pero el cuerpo esMonoEntonces, ¿cómo debo registrarlo? Debería ser al revés y tengo que suscribirme al cuerpo de la solicitudMono e iniciar sesión en la devolución de llamada? Otro problema es queServerResponse La interfaz aquí no tiene acceso al cuerpo de respuesta. ¿Cómo puedo conseguirlo aquí?

Otro enfoque que he probado es usarWebFilter

@Bean
fun loggingFilter(): WebFilter =
        WebFilter { exchange, chain ->
            val request = exchange.request
            logger.info { "Processing request method=${request.method} path=${request.path.pathWithinApplication()} params=[${request.queryParams}] body=[${request.body}]"  }

            val result = chain.filter(exchange)

            logger.info { "Handling with response ${exchange.response}" }

            return@WebFilter result
        }

El mismo problema aquí: el cuerpo de la solicitud esFlux y sin cuerpo de respuesta.

¿Hay alguna forma de acceder a la solicitud y respuesta completas para iniciar sesión desde algunos filtros? ¿Qué no entiendo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta