首页 > 解决方案 > Spring Webflux Reactor Netty:HTTP 请求/响应十六进制转储?

问题描述

我们必须在 application.properties 中设置什么日志级别才能在控制台中从 reactor-netty看到完整的 HTTP 请求和响应以及标头和正文作为十六进制转储?

logging.level.reactor.netty=trace

仅显示响应 http 标头。

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 248
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1 ; mode=block
Referrer-Policy: no-referrer

标签: spring-webfluxreactor-netty

解决方案


将日志记录级别保持为 DEBUG 或 TRACE 并按照以下说明进行操作:

  1. 如果您想查看hex dump服务器的,那么您可以像这样自定义它:
@Component
public class MyNettyWebServerCustomizer
        implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
    @Override
    public void customize(NettyReactiveWebServerFactory factory) {
        factory.addServerCustomizers(httpServer -> httpServer.wiretap(true));
    }
}
  1. 如果您想查看hex dump客户端的,那么您可以像这样自定义它:
WebClient.builder()
        .clientConnector(new ReactorClientHttpConnector(HttpClient.create().wiretap(true)))
        .build();

推荐阅读