SpringCloud - 声明式服务调用组件Feign使用详解6(请求压缩、日志配置)
六、请求压缩
1,基础配置
Spring Cloud Feign 支持对请求与响应进行 GZIP 压缩,以减少通信过程中性能的损耗。我们只需要通过如下设置,就能开启请求与响应的压缩功能:
#开启请求压缩功能
feign.compression.request.enabled=true
#开启响应压缩功能
feign.compression.response.enabled=true
2,详细配置
我们还能通过如下配置属性对请求压缩做一些更细致的设置:#开启请求压缩功能
feign.compression.request.enabled=true
#指定压缩的请求数据类型
feign.compression.request.mime-types="text/xml", "application/xml", "application/json"
#设置请求压缩的大小下限(只有超过这个大小的请求才会对其进行压缩)
feign.compression.request.min-request-size=2048
七、日志配置
1,设置 Logger 级别
Spring Cloud Feign 在构建被 @FeignClient 注释修饰的服务客户端时,会为每一个客户端都创建一个 feign.Logger 实例。对于 Feign 的 logger 级别主要有下面 4 类:
- NONE:不记录任何信息(默认)
- BASIC:仅记录请求方法、URL 以及响应状态码和执行时间
- HEADERS:除了记录 BASIC 级别的信息之外,还会记录请求和响应的头信息。
- FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class FeignConsumerApplication { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } public static void main(String[] args) { SpringApplication.run(FeignConsumerApplication.class, args); } }
(2)当然也可以通过实现配置类,然后在具体的 Feign 客户端来指定配置类以实现是否要调整不同的日志级别:
@Configuration public class FullLogConfiguration { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } } @FeignClient(name="hello-service", configuration = FullLogConfiguration.class) public interface HelloService { // 带有Request参数的接口 @GetMapping("/hello1") String hello1(@RequestParam("name") String name); // 带有Header信息的接口 @GetMapping("/hello2") User hello2(@RequestHeader("name") String name, @RequestHeader("age") Integer age); // 带有Header信息的接口 @PostMapping("/hello3") String hello3(@RequestBody User user); }
2,修改客户端的日志打印级别
(1)因为 Feign 只对日志级别为 debug 级别做出响应,所以如果需要打印出日志,除了前面的设置之外,还需要修改客户端的日志级别。(2)我们可以在 application.properties 文件中使用 logging.level.<你的 Feign 客户端全路径类名> 的参数配置来开启指定 Feign 客户端的 DEBUG 日志:
#将HelloService客户端的日志级别设置为DEBUG
logging.level.com.example.feignconsumer.service.HelloService=DEBUG