如何在 spring-mvc 中将日志记录添加到 webflux 端点?
Posted
技术标签:
【中文标题】如何在 spring-mvc 中将日志记录添加到 webflux 端点?【英文标题】:How to add logging to a webflux endpoint in spring-mvc? 【发布时间】:2020-07-11 08:50:29 【问题描述】:我有一个现有的spring-mvc
应用程序与不同的@RestController
。现在我想添加一个Mono<String>
端点,并使用 url 路径记录请求时间戳以及响应时间戳。
但是怎么做呢?我不能简单地@EnableWebFlux
,因为我必须为此禁用 spring-mvc。
如何在响应被异步写回之前为捕获调用的 webflux 端点显式注册过滤器?
@RestController
public class FluxService
@PostMapping
public Mono<String> post()
return webClient.post().uri(uri).bodyValue(payload).retrieve().bodyToMono(String.class);
我希望在 @PostMapping
端点上增强日志记录,而不是在 webClient
上!
【问题讨论】:
【参考方案1】:MVC 是一个基于阻塞/servlet 的 api,将它与 webflux 混合是行不通的。他们使用不同的过滤器、安全性等,因为 MVC 假设了很多 ThreadLocal 的东西。 (Can I use SpringMvc and webflux together?)
如果你真的想像这样混合它们,你可以使用 .doOnNext() 一旦你得到你的单声道并在那里调用你的记录器。
【讨论】:
以上是关于如何在 spring-mvc 中将日志记录添加到 webflux 端点?的主要内容,如果未能解决你的问题,请参考以下文章