В Javascript есть замечательная библиотека Морган, которая регистрирует все входящие HTTP-запросы. Интересно, есть ли эквивалентная библиотека в Java/Kotlin для регистрации запросов весенней загрузки webflux.




Вот что у меня сработало после просмотра этого репо
Я всю ночь пытался получить тело запроса, но продолжал получать ошибки: один подписчик только для каждого запроса. Это либо невозможно, либо чертовски сложно, либо не рекомендуется в случае запросов с большим телом (поскольку это может заблокировать ваш сервер). Поэтому я настоятельно рекомендую вместо этого преобразовать ваши @RequestBody объекты в @RequestParam параметры запроса, если вы хотите регистрировать переменные в почтовых запросах.
package com.example.demo
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Component
import org.springframework.web.server.ServerWebExchange
import org.springframework.web.server.WebFilter
import org.springframework.web.server.WebFilterChain
import reactor.core.publisher.Mono
@Component
class LogFilter: WebFilter {
private val logger = LoggerFactory.getLogger(LogFilter::class.java)
override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
val startTime = System.currentTimeMillis()
val request = exchange.request
val path = request.uri.path
val requestPrintMap = mutableMapOf<Any, Any>()
requestPrintMap["headers"] = request.headers
requestPrintMap["uri"] = request.uri
requestPrintMap["params"] = request.queryParams
return chain
.filter(exchange)
.doAfterTerminate {
logger.info("Served '{}' as {} in {} msec",
path,
exchange.response.statusCode,
System.currentTimeMillis() - startTime)
}
}
}