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: 记录所有请求与响应的明细, 包括头信息、 请求体、 元数据等。
posted @ 2020-10-02 23:19  跃小云  阅读(190)  评论(0编辑  收藏  举报