当前位置: 首页 > 知识库问答 >
问题:

SpringWebClient-响应时的日志Uri和方法

楚建柏
2023-03-14

我已经定义了WebClient

  @Bean
  WebClient myWebClient() {
    return WebClient.builder()
        .baseUrl(baseUrl)
        .filter(logRequest())
        .filter(logResponse())
        .build();
  }

  private ExchangeFilterFunction logRequest() {
    return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
      log.info("MY_WEB_CLIENT | Performing {} {} request", clientRequest.method(), clientRequest.url());
      return Mono.just(clientRequest);
    });
  }

  private ExchangeFilterFunction logResponse() {
    return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
      log.info("MY_WEB_CLIENT | Respond with {} status code", clientResponse.rawStatusCode());
      return Mono.just(clientResponse);
    });
  }

logResponsefilter方法中,我记录了响应httpStatusCode,但我还想添加执行请求的httpMethod uri。我知道我可以在请求之前访问这些数据(使用ExchangeFilterFunction.ofRequestProcessor()),但有没有办法将这些数据添加到我的logResponse过滤器?

共有1个答案

郑星雨
2023-03-14

找到了方法:

private static ExchangeFilterFunction log() {
    return (ClientRequest request, ExchangeFunction next) -> {
      log.info("MY_WEB_CLIENT | Performing {} {} request", request.method(), request.url());
      return next.exchange(request)
          .doOnNext((ClientResponse response) -> {
            log.info("MY_WEB_CLIENT | {} {} Respond with {} status code",request.method(), request.url(),
                response.rawStatusCode());
          });
    };
 类似资料:
  • 我使用CXF和JAX-RS构建RESTFul API,为我的web应用程序提供数据。我想知道是否有可能记录请求X到达我的API、被处理然后作为响应返回所花费的时间。 我已经将自己的CXF记录器定义为JAX-RS特性,因为<code> 有没有一种方法可以从客户端跟踪时间并记录下来?

  • 我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?

  • 我正在使用改造2.x,我想记录请求和响应的标头和正文。 这是我正在做的,我的问题是请求的标题没有被记录在Android Monitor中,但其余的一切都被记录了。 Gradle版本 使用RC1和3.0.1由于错误问题报告错误链接

  • 标题应该是不言自明的。 出于调试目的,我希望express打印每个服务请求的响应代码和正文。打印响应代码很容易,但打印响应体更为复杂,因为响应体似乎不容易作为属性使用。 以下情况不起作用: 当然,我可以很容易地在发出请求的客户端打印响应,但我也更喜欢在服务器端打印。 PS:如果有帮助的话,我所有的响应都是json,但希望有一个解决方案可以处理一般的响应。

  • 本文向大家介绍nginx日志按天生成和定期删除日志的方法,包括了nginx日志按天生成和定期删除日志的方法的使用技巧和注意事项,需要的朋友参考一下 问题:nginx会按照nginx.conf的配置生成access.log和error.log,随着访问量的增长,日志文件会越来越大,既会影响访问的速度(写入日志时间延长),也会增加查找日志的难度,nginx没有这种按天或更细粒度生成日志的机制。所以下面

  • 我试图遵循API的最佳实践,但我得到了相互矛盾的建议。大多数人建议对URI使用脊柱病例(例如stackoverflow和RFC3986。我有一个API,允许通过各种参数过滤GET请求: < code >获取/终结点?my-parameter=true 但是,我也在 GET 响应和 PATCH 请求中使用相同的参数。在那里,我看到更多的骆驼大小写或snake_case,脊柱大小写是一个额外的语言,不