WebFlux系列(十一)WebClient 日志

#Java#Spring#WebClient#WebFlux#log#日志#

WebClient 日志

视频讲解 : https://www.bilibili.com/video/av83627944/

WebfluxConsumerApplication.java
package com.example.webfluxconsumer;

import lombok.extern.log4j.Log4j2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

@Log4j2
@SpringBootApplication
public class WebfluxConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebfluxConsumerApplication.class, args);
    }
@RestController
class EmployeeController {
    @PostMapping("save")
    public Mono<Boolean> save(@RequestBody Mono<Employee> employeeMono) {
        WebClient webClient  = WebClient.builder().baseUrl("http://localhost:8080/save")
                .filter(logRequest())
                .filter(logResponse())
                .build();
        return webClient.post().body(employeeMono, Employee.class).retrieve().bodyToMono(Boolean.class);
    }
    private ExchangeFilterFunction logRequest() {
        return (clientRequest, next) -> {
            log.info("Request: {} {}", clientRequest.method(), clientRequest.url());
            clientRequest.headers()
                    .forEach((name, values) -> values.forEach(value -> log.info("Request: {}={}", name, value)));
            return next.exchange(clientRequest);
        };
    }
    private ExchangeFilterFunction logResponse() {
        return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
            clientResponse.headers().asHttpHeaders()
                    .forEach((name, values) -> values.forEach(value -> log.info("Response: {}={}", name, value)));
            return Mono.just(clientResponse);
        });
    }
}
}

公众号,坚持每天3分钟视频学习

原文地址:https://www.cnblogs.com/JavaWeiBianCheng/p/12209967.html

时间: 2024-11-13 09:56:30

WebFlux系列(十一)WebClient 日志的相关文章

WebFlux系列(六)WebClient VS RestTemplate

#Java#Spring#WebFlux#WebClient#RestTemplate# WebClient和RestTemplate性能比较 视频讲解: https://www.bilibili.com/video/av82675791/ 服务器端WebfluxServerApplication.java package com.example.webfluxserver; import lombok.extern.log4j.Log4j2; import org.springframewor

WebFlux系列(九)WebClient Uri列表、数组传参

#Java#Spring#WebFlux#Reactor#WebClient#Uri#传参#数组#列表# WebClient Uri列表.数组传参 视频讲解:  https://www.bilibili.com/video/av83351261/ 服务端: @RestController class EmployeeController { @GetMapping("employee") public Mono<String> requestList(@RequestPar

struts2官方 中文教程 系列十一:使用XML进行表单验证

在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让您可以内置到Struts 2框架的验证器. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列十一:使用XML进行表单验证  即 http://www.cnblogs.com/linghaoxinpian/p/6938720.html 下载本章节代码 为了使用户能够编辑存储在Person对

SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案

原文:SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的GIS专业理论知识. 5

java基础解析系列(十一)---equals、==和hashcode方法

java基础解析系列(十一)---equals.==和hashcode方法 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer缓存及装箱拆箱 java基础解析系列(三)---HashMap原理 java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 j

Nginx系列-4.Nginx日志配置及日志切割

Nginx系列-4.Nginx日志配置及日志切割 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux.Nginx.MySQL.PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日志配置及日志切割 Nginx系列-5.配置Nginx的防盗链 Nginx系列-6.配置Nginx的HTTPS Nginx系列-7.配置Nginx使用uwsgi支持web.py框架 Nginx系列-8.配置Nginx+

Silverlight &amp; Blend动画设计系列十一:沿路径动画(Animation Along a Path)

原文:Silverlight & Blend动画设计系列十一:沿路径动画(Animation Along a Path) Silverlight 提供一个好的动画基础,但缺少一种方便的方法沿任意几何路径对象进行动画处理.在Windows Presentation Foundation中提供了动画处理类DoubleAnimationUsingPath和PointAnimationUsingPath,使用这些类就可以非常容易的实现沿几何路径的动画处理,本文提供了基于Silverlight的等效动画类

【BASIS系列】SAP 日志管理

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP 日志管理 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 现在项目上自开发的dialog程序越来越多,有很多敏感数据需要像SAP标准的业务一样,能看到所有的修改日志,要想实现日志的功能,有以下几个办法: 办法一.建一个日志表,在原有表的基础上,加上日期和时间两个关键字,这样每次修改的记录都会

日志易使用系列四:日志采集 Agent 的配置

第二期日志易使用系列中<日志易产品使用系列二:使用日志易 SaaS 版本完成一次 JSON 日志分析>,通过"本地上传"的方式,我们已经能够基于日志易自动解析的 JSON 日志创建分析图表.第三期日志易使用系列中<日志易使用系列三:仪表盘的创建与使用>,通过仪表盘,我们可以将这些图形保存下来,并用于分析展示.然而,实时数据的分析.展示依赖于实时的日志采集,日志易可通过 Agent.Syslog 等方式实现日志的实时采集.根据服务器.设备.或IT系统的不同,日志易