gateway、webflux、reactor-netty请求日志输出方式

为了让大家更好地了解 "gateway、webflux、reactor-netty请求日志输出方式",我将分别讲解这三个主题,并提供相应的示例代码,在此之前,请确保已经安装好了Java环境,并了解基本的Spring Boot框架。

Gateway请求日志输出方式

Gateway是Spring Cloud的组件之一,可以将多个微服务组合起来作为一个整体对外提供服务。在Gateway中,一般会使用Spring Boot的内置日志系统Logback进行日志输出。为了打印HTTP请求日志,我们需要在Logback的配置文件中添加以下代码:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

<logger name="org.springframework.cloud.gateway" level="DEBUG">
  <appender-ref ref="STDOUT" />
</logger>

该配置文件中定义了一个名为STDOUT的输出源,将日志输出到标准控制台上,并指定了日志输出的格式。另外,还定义了一个名为org.springframework.cloud.gateway的日志记录器,将级别设置为DEBUG,表示输出所有的debug级别日志。

示例1:当用户访问http://localhost:8080/hello时,输出如下日志:

16:23:42.600 [reactor-http-epoll-5] DEBUG o.s.c.g.h.p.RoutePredicateFactory - RouteDefinition matched: Route{id='0', uri='http://localhost:8081/hello', order=0, predicates=[{GET /hello}], filters=[]}
16:23:42.600 [reactor-http-epoll-5] DEBUG o.s.c.g.f.r.GatewayFilterChain - RouteDefinition{id='0', uri='http://localhost:8081/hello', order=0, predicates=[{GET /hello}], filters=[]} matches request http://localhost:8080/hello
16:23:42.601 [reactor-http-epoll-5] DEBUG o.s.c.g.f.r.RewritePathGatewayFilterFactory - Rewrote HTTP path from "" to "/hello"
16:23:42.602 [reactor-http-epoll-5] DEBUG o.s.c.g.f.w.r.RoutingWebFilter - Route matched: Route{id='0', uri='http://localhost:8081/hello', order=0, predicates=[{GET /hello}], filters=[]}
16:23:42.603 [reactor-http-epoll-5] DEBUG o.s.c.g.f.LoggingGatewayFilterFactory - [80fb7b97-1] [] Received HTTP GET request on http://localhost:8080/hello
16:23:42.603 [reactor-http-epoll-5] DEBUG o.s.c.g.f.LoggingGatewayFilterFactory - [80fb7b97-1] [] [Elapsed time: 0ms] 
16:23:42.603 [reactor-http-epoll-5] DEBUG o.s.c.g.f.r.ReadBodyPredicateFactory - Reading body for content-based routing

WebFlux请求日志输出方式

WebFlux是Spring 5中新增的响应式编程框架,其内置的日志系统也是Logback。默认情况下,WebFlux处理器并不会输出HTTP请求日志,因此需要通过配置日志记录器的方式进行输出。具体可以在Logback配置文件中添加以下代码:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

<logger name="org.springframework.web.reactive" level="DEBUG">
  <appender-ref ref="STDOUT" />
</logger>

与Gateway类似,该配置文件中定义了一个名为STDOUT的输出源,并指定了日志输出的格式。另外,还定义了一个名为org.springframework.web.reactive的日志记录器,将级别设置为DEBUG,表示输出所有的debug级别日志。

示例2:当用户访问http://localhost:8080/hello时,输出如下日志:

2020-01-06 16:27:54.174 DEBUG 23184 --- [ctor-http-nio-3] o.s.w.r.handler.SimpleUrlHandlerMapping  : [] Mapped to ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]
2020-01-06 16:27:54.206 DEBUG 23184 --- [ctor-http-nio-3] o.s.w.r.f.s.ServerWebExchangeUtils      : [] Using gateway exchange with ThreadPoolExecutorTaskExecutor [java.util.concurrent.ThreadPoolExecutor@afaef0b[ThreadNamePrefix=reactor-http, PoolSize=20, ActiveThreads=3, QueueCapacity=1000]] and ServerWebExchange create
2020-01-06 16:27:54.248 DEBUG 23184 --- [ctor-http-nio-3] o.s.w.s.adapter.HttpWebHandlerAdapter    : [] [80fb7b97-3] HTTP GET "/hello"
2020-01-06 16:27:54.266 DEBUG 23184 --- [ctor-http-nio-3] o.s.w.r.f.s.ServerWebExchangeUtils      : [] Preparing response for ServerWebExchange [id = 7]
2020-01-06 16:27:54.273 DEBUG 23184 --- [ctor-http-nio-3] o.s.w.r.handler.SimpleUrlHandlerMapping  : [] Mapped to ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]

Reactor-Netty请求日志输出方式

Reactor-Netty是Spring WebFlux的底层网络框架,它使用SLF4J作为日志系统。默认情况下,Reactor-Netty并不会输出HTTP请求日志,因此需要通过配置日志记录器的方式进行输出。具体可以在Logback配置文件中添加以下代码:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

<logger name="reactor.netty" level="DEBUG">
  <appender-ref ref="STDOUT" />
</logger>

与上述两个例子略有不同,该配置文件中定义了一个名为reactor.netty的日志记录器,将级别设置为DEBUG,表示输出所有的debug级别日志。

示例3:当用户访问http://localhost:8080/hello时,输出如下日志:

13:47:12.868 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6] REGISTERED
13:47:12.868 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6] CONNECT: localhost/127.0.0.1:8081
13:47:12.870 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6, L:/0:0:0:0:0:0:0:0:49990 - R:localhost/127.0.0.1:8081] ACTIVE
13:47:12.874 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6, L:/0:0:0:0:0:0:0:0:49990 - R:localhost/127.0.0.1:8081] WRITE: 67B
13:47:12.881 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6, L:/0:0:0:0:0:0:0:0:49990 - R:localhost/127.0.0.1:8081] FLUSH
13:47:12.883 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6, L:/0:0:0:0:0:0:0:0:49990 - R:localhost/127.0.0.1:8081] READ: 67B
13:47:12.888 [reactor-http-nio-1] DEBUG reactor.netty.tcp.TcpClient       - [id: 0x81f5cab6, L:/0:0:0:0:0:0:0:0:49990 - R:localhost/127.0.0.1:8081] READ COMPLETE

至此,我们已经掌握了"gateway、webflux、reactor-netty请求日志输出方式"的完整攻略,包括了对三个主题的详细讲解和示例代码的提供。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:gateway、webflux、reactor-netty请求日志输出方式 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot 配置文件总结

    下面是关于SpringBoot配置文件的总结: SpringBoot 配置文件总结 SpringBoot 配置文件主要包含两种类型:application.properties和application.yml。 配置属性 SpringBoot 配置属性分为两种类型: 内置属性 自定义属性 内置属性是SpringBoot提供的默认配置属性,我们可以在配置文件中…

    Java 2023年5月31日
    00
  • springboot用户数据修改的详细实现

    SpringBoot用户数据修改的详细实现 在SpringBoot中,我们可以使用Spring Data JPA来实现用户数据的修改。以下是一个详细的实现攻略: 1. 添加依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId&g…

    Java 2023年5月15日
    00
  • JavaWeb入门:ServletContext详解和应用

    JavaWeb入门:ServletContext详解和应用 ServletContext是JavaEE中一个非常重要的Web接口,它代表了Servlet容器提供的一个Web应用程序的环境,可以用来从应用程序中获取初始化参数、获取上下文路径、获取资源路径、记录日志信息等。 ServletContext对象 ServletContext对象是由Servlet容器…

    Java 2023年6月15日
    00
  • Java执行JavaScript代码

    下面是Java执行JavaScript代码的完整攻略,包含两条示例说明。 1. 前置知识 在执行JavaScript代码前,需要先了解几个概念: 版本:Java需要使用1.7及以上版本才能支持JavaScript 引擎:Java中通常使用Rhino或Nashorn引擎执行JavaScript代码 接口:Java提供了脚本引擎接口,用于在Java中执行Java…

    Java 2023年5月26日
    00
  • select下拉菜单实现二级联动效果

    要使用select下拉菜单实现二级联动效果,需要以下步骤: 创建HTML结构,包括两个select元素,分别用于显示一级和二级选项,以及相应的label元素。 示例代码: <label for="province">选择省份:</label> <select name="province"…

    Java 2023年6月15日
    00
  • MyBatis Generator的简单使用方法示例

    MyBatis Generator 的简单使用方法示例 什么是 MyBatis Generator MyBatis Generator 是一个基于 Java 的代码生成器,可以快速为 MyBatis 创建数据访问层代码。使用 MyBatis Generator 可以自动生成 MyBatis 的 POJO 类、Mapper 接口和 SQL 映射文件。 MyBa…

    Java 2023年5月20日
    00
  • SpringBoot整合MyBatis的代码详解

    以下是关于SpringBoot整合MyBatis的完整攻略: 1. 准备工作 建立SpringBoot项目 添加相关依赖:SpringBoot的Web、MyBatis、MySQL驱动 2. 配置数据源 在SpringBoot项目的配置文件application.properties中,添加数据源的相关配置: # 数据源配置 spring.datasource…

    Java 2023年5月19日
    00
  • SpringBoot学习之Json数据交互的方法

    下面是”SpringBoot学习之Json数据交互的方法”的详细攻略: 1. Json数据交互的概述 JSON(JavaScript Object Notation)是一种轻量级的数据交互格式,常用于前后端数据传输。SpringBoot可以很方便地支持Json数据的交互,实现前后端数据的无缝传输。 2. 配置Json数据交互 在SpringBoot中,配置J…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部