当前位置: > > > SpringCloud - 声明式服务调用组件Feign使用详解6(请求压缩、日志配置)

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 实例。对于 Feignlogger 级别主要有下面 4 类:
  • NONE:不记录任何信息(默认)
  • BASIC:仅记录请求方法、URL 以及响应状态码和执行时间
  • HEADERS:除了记录 BASIC 级别的信息之外,还会记录请求和响应的头信息。
  • FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据等。

(1)由于默认的 Logger.Level 对象定义为 None 级别,不会记录任何 Feign 调用过程中的信息,首先要调整它的级别。如果要进行全局的日志级别设置,可以在主类中直接加入 Logger.levelBean 创建即可:
@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

3,访问测试

    启动项目,我们访问 http://localhost:9001/feign-consumer 触发对 HELLO-SERVICE 接口的调用,控制台中就会看到类似下面的请求详细日志:
评论0