SpringCloud详解 第四章声明式服务调用 Feign(四)
本章梳理其他配置
一、请求压缩
请求压缩。Spring Cloud Feign支持对请求与响应进行 GZIP 压缩,以减少通信过程中的性能损耗 。我们只需通过下面两个参数设置, 就能开启请求与响应的压缩功能:
feign.compression.request.enabled = true feign.compression.response.enabled = true
同时, 我们还能对请求压缩做 一 些更细致的设置, 比如下面的配置内容指定了压缩的请求数据类型, 并设置了请求压缩的大小下限, 只有超过这个大小的请求才会对其进行压缩。
feign.compression.request.enabled = true feign.compression.request.mime-types = text/xml,application/xml,application/json //默认值 feign.compression.request.min-request-size=2048 //默认值
二、日志配置
Spring Cloud Feign 在构建被 @FeignClient 注解修饰的服务客户端时,会为每 一 个客户端都创建 一 个 feign.Logger 实例,我们可以利用该日志对象的 DEBUG 模式来帮助分析 Feign 的请求细节。可以在 application.properties 文件中使用 logging.level.<FeignClient> 的参数配置格式来开启指定 Feign 客户端的 DEBUG 日志, 其中<FeignClient> 为 Feign 客户端定义接口的完整路径, 比如针对本文中我们实现的 HelloService 可以按如下配置开启:
logging.level.com.wuzz.demo.HelloService = DEBUG
但是, 只是添加了如上配置, 还无法实现对 DEBUG 日志的输出。 这时由于 Feign 客户端默认的 Logger.Level 对象定义为 NONE 级别, 该级别不会记录任何 Feign 调用过程中的信息, 所以我们需要调整它的级别, 针对全局的日志级别, 可以在应用主类中直接加入 Logger.Level 的 Bean 创建, 具体如下:
@Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; }
或者添加个配置类:
@Configuration public class FullLogConfiguration { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } @FeignClient(name = "cloud-provider", configuration = FullLogConfiguration.class) public interface HelloService { 。。。。。。 }
在调整日志级别为 FULL 之后, 我们可以再访问一 下之前的http://localhost:9012/feign/hello 接口,这时我们在 feign-server的控制台中就可以看到对应的日志。类似如下信息:
对于 Feign 的 Logger 级别主要有下面 4 类, 可根据实际需要进行调整使用。
- NONE: 不记录任何信息。
- BASIC: 仅记录请求方法、URL以及响应状态码和执行时间。
- HEADERS: 除了记录BASIC级别的信息之外, 还会记录请求和响应的头信息。
- FULL: 记录所有请求与响应的明细, 包括头信息、 请求体、 元数据等。