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请求日志输出方式"的完整攻略,包括了对三个主题的详细讲解和示例代码的提供。

阅读剩余 46%

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

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

相关文章

  • SpringBoot spring.factories加载时机分析

    在SpringBoot中,spring.factories文件是一种特定的配置文件,用于向Spring容器中加载自定义的配置类或者自动配置组件。 什么是SpringBoot spring.factories文件 spring.factories文件位于META-INF目录下,它是SpringBoot用来实现自动配置的一个重要组件。该文件被用于对Spring加…

    Java 2023年5月31日
    00
  • Java实现数据连接池Druid举例

    Java实现数据连接池是常见的优化数据库性能的方法,其中Druid是一款深受Java开发者喜爱的开源数据连接池。下面我会为你详细讲解Java实现数据连接池Druid的完整攻略,包括Druid的使用和示例。 1. 引入Druid依赖 Druid是由阿里巴巴开发的一款 Java 数据库连接池,你可以通过添加以下依赖来引入Druid: <dependency…

    Java 2023年5月19日
    00
  • 深入浅析Java常用的格式化Json工具类

    深入浅析Java常用的格式化Json工具类 什么是Json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。 Jav…

    Java 2023年5月26日
    00
  • Java中StringUtils与CollectionUtils和ObjectUtil概念讲解

    Java中StringUtils、CollectionUtils和ObjectUtil概念讲解 StringUtils StringUtils是一款开源的Java字符串工具类,它提供了很多常用的字符串操作方法,可以方便地对字符串进行处理和操作。常用的方法有: isBlank() isBlank用来检测字符串是否为空或者全由空格组成。示例代码如下: Strin…

    Java 2023年5月26日
    00
  • Spring Data JPA进行数据分页与排序的方法

    下面是使用Spring Data JPA进行数据分页与排序的完整攻略: 准备工作 首先需要在项目的pom.xml文件中引入spring-data-jpa和数据库驱动,例如: <dependency> <groupId>org.springframework.data</groupId> <artifactId>…

    Java 2023年5月20日
    00
  • Spring Security十分钟入门教程

    Spring Security 十分钟入门教程 Spring Security 是一个基于 Spring 框架的安全框架,能够为 web 应用程序提供身份验证和授权的支持。 开始之前 在开始学习之前,需要具备以下知识: Spring 框架基础 Maven 项目管理工具 Spring Boot 基础知识 步骤 步骤一:创建一个 Spring Boot Web …

    Java 2023年6月3日
    00
  • 基于Ajax技术实现考试倒计时并自动提交试卷

    实现基于Ajax技术的考试倒计时并自动提交试卷,主要分为以下几个步骤: 前端设计:基于HTML、CSS和JavaScript实现考试页面的布局和倒计时功能,并设置提交试卷的按钮。 示例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g…

    Java 2023年6月15日
    00
  • java 中自定义OutputFormat的实例详解

    Java 中自定义 OutputFormat 的实例详解 在 Java 编程中,我们有时候需要对输出结果进行格式化处理,这时候我们就可以使用 OutputFormat 类实现。OutputFormat 是 org.dom4j.io 包中的一个类,它是用来控制 XmlWriter 的输出格式的。 OutputFormat 类的基本用法 OutputFormat…

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