本篇内容介绍了“gateway、webflux、reactor-netty请求日志输出的方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在使用spring cloud gateway时想要输出请求日志,考虑到两种实现方案方案一官网中使用Reactor Netty Acce免费云主机域名ss Logs方案,配置“-Dreactor.netty.http.server.accessLogEnabled=true”开启日志记录。输出如下:reactor.netty.http.server.AccessLog :
10.2.20.177 – – [02/Dec/2020:16:41:57 +0800] “GET /fapi/gw/hi/login HTTP/1.1” 200 319 8080 626 ms优点:简单方便缺点:格式固定,信息量少方案二创建一个logfilter,在logfilter中解析request,并输出请求信息优点:可以自定义日志格式和内容,可以获取body信息缺点:返回信息需要再写一个filter,没有匹配到路由时无法进入到logfilter中对方案一进行改造,使其满足需求。对reactor-netty源码分析,主要涉及AccessLog
:日志工具,日志结构体AccessLogHandler
:http1.1协议日志控制,我们主要使用这个。AccessLogHandler2
:http2协议日志控制代码如下:AccessLogHandler
:日志控制执行顺序AccessLogHandler.channelRead > GlobalFilter.filter > AbstractLoadBalance.choose >response.writeWith >AccessLogHandler.write对AccessLog和AccessLogHandler进行重写,输出自己想要的内容和样式。AccessLogHandler中重写了ChannelDuplexHandler中的channelRead和write方法,还可以对ChannelInboundHandler和ChannelOutboundHandler中的方法进行重写,覆盖请求的整个生命周期。当两者一起时配置的并不是webflux web application, 仍然时一个spring mvc web application。官方文档中有这么一段注解:很多开发者添加spring-boot-start-webflux到他们的spring mvc web applicaiton去是为了使用reactive WebClient. 如果希望更改webApplication 类型需要显示的设置,如SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE).结论一:当两者一起时配置的并不是webflux web application, 仍然时一个spring mvc web application。但是启动不会报错,可以正常使用,但是webflux功能失效因为gateway和zuul不一样,gateway用的是长连接,netty-webflux,zuul1.0用的就是同步webmvc。所以你的非gateway子项目启动用的是webmvc,你的gateway启动用的是webflux. spring-boot-start-web和spring-boot-start-webflux相见分外眼红。不能配置在同一pom.xml,或者不能在同一项目中出现,不然就会启动报错结论二:当spring-cloud-gateway和spring-boot-starer-web两者一起时配置的时候, 启动直接报错,依赖包冲突不兼容“gateway、webflux、reactor-netty请求日志输出的方式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!
相关推荐: springboot springsecuroty中注销和权限控制问题的示例分析
小编给大家分享一下springbootspringsecuroty中注销和权限控制问题的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参免费云主机域名考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!src/main/java…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。