如何使用Web响应实现通用HTTP请求/响应日志记录

时间:2017-02-05 20:25:34

标签: spring-web spring-webflux

使用“传统”网络框架,可以使用例如AbstractRequestLoggingFilter用于实现通用日志记录筛选器。使用web-reactive时,不再调用过滤器(有意义的是,因为它在HttpServletRequest上运行)。

有人能指出我正确的方向来实现带有web-reactive的请求过滤器,它会在请求之前和之后记录HTTP请求,包括它的正文,就像在AbstractRequestLoggingFilter中一样?

1 个答案:

答案 0 :(得分:2)

您可以实现WebFilter并将其声明为bean,它将自动被选中。

请注意,WebFilter合约基于ServerWebExchange,其中包含ServerHttpRequest。身体不能直接作为byte[]访问,而是Flux<DataBuffer>;这并不意味着在内存中缓冲或由过滤器使用,因此记录整个请求主体比在MVC方案中更复杂。此外,您应该避免在请求处理期间阻止操作。