Spring Webflux Webclient:wiretap日志记录问题

7

关于Java Spring Webflux WebClient和wiretap日志记录的快速问题。

我目前正在使用SpringBoot Webflux WebClient 2.5.0进行Java编程,以进行传出HTTP请求(其中我是源)。我需要发起HTTP请求(到目标)。

我创建的传出HTTP客户端如下所示:

webClientUtil.getWebClient().mutate().baseUrl(someUrl).build().post().body(BodyInserters.fromValue(someRequest)).exchangeToMono(clientResponse -> clientResponse.bodyToMono(SomeResponse.class));

我想要记录请求和响应,因此我正在编写以下内容:

final HttpClient httpClient = HttpClient.create().wiretap("reactor.netty.http.client.HttpClient", LogLevel.INFO, AdvancedByteBufFormat.HEX_DUMP)

在一个 Util 类中:

public WebClient getWebClient() {
        final HttpClient httpClient = HttpClient.create().wiretap("reactor.netty.http.client.HttpClient", LogLevel.INFO, AdvancedByteBufFormat.HEX_DUMP).metrics(true, Function.identity()).proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host(proxyUrl));
        return WebClient.create().mutate().defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE, HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE).clientConnector(new ReactorClientHttpConnector(httpClient)).build();
    }

WebClient实现已经测试并且可用。

我将我的日志记录级别设置为INFO,使用logging.level.root=INFO

请注意,日志级别为info,wiretap也为info。

不幸的是,我没有看到任何额外的日志。

请问我做错了什么吗?

谢谢!


你是订阅请求还是将响应传递回订阅某些内容的东西?这里有一个有效地与您的配置相同的工作示例,https://github.com/DarrenForsythe/so67670516 如果运行该应用程序,它将按预期转储请求。我想知道请求是否正在发生/被订阅或其他配置/日志记录配置是否会影响它。 - Darren Forsythe
谢谢您的评论!是的,我已经订阅了它,在响应方面进行了良好的计算等。唯一的问题是我没有看到任何窃听日志。 - PatPanda
logging.level.reactor.netty.http.client.HttpClient = INFO你尝试过为该包设置特定的日志级别吗? - Squiggs.
是的,两者都不会产生任何额外的日志。 - PatPanda
1个回答

0
有没有任何一个位于其他地方的logback.xml文件可以覆盖配置?
在一些测试中我遇到了类似的问题,并通过在我的logback-test.xml文件中加入以下内容解决了它:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml" />

  <logger name="reactor.netty" level="debug"/>

</configuration> 

1
仅使用 logback-test.xml,而非 logback-text.xml。 - rfelgent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接