如何在 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 端点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tomcat 中将级别日志记录设置为 DEBUG?

如何在 asp .NET 中将记录添加到数据库中

如何在电脑中将日志一般状态改成调试状态

如何在 Avro 中将记录与地图混合?

如何在c#中将数据添加到集合列表中[重复]

如何在 Spring-MVC 中添加“必需”属性 [重复]