【Spring Cloud】如何修改Feign的日志记录级别




前言

    本次示例代码的文件结构如下图所示。

1. 介绍

    Feign 允许我们自定义配置,下面是 Feign 可以修改的配置。 类型 作用 说明 feign.Logger.Level 修改日志级别 包含四种不同级别:NONE、BASIC、HEADERS、FULL feign.codec.Decoder 响应结果的解析器 HTTP 远程调用的结果做解析,例如解析 JSON 字符串反序列化成 Java 对象 feign.codec.Encoder 请求参数编码 将请求参数编码,便于通过 HTTP 请求发送 feign.Contract 支持的注解格式 默认是 Spring MVC 的注解 feign.Retryer 失败重试机制 请求失败的重试机制,默认是没有,不过会使用 Ribbon 的重试 一般我们需要配置日志级别。NONE 是不记录,BASIC 只记录基本的 HTTP 请求信息,HEADERS 除了基本的 HTTP 信息外,还记录请求头;而 FULL 则是记录完整的 HTTP 信息。换句话说,按日志完整程度从小到大排序为:NONE < BASIC < HEADERS < FULL 。 实际开发中,推荐使用 BASIC 。因为记录日志会消耗一定的性能。

2. 方式一:配置文件


1)全局生效

    order-service 的配置文件。
feign:
  client:
    config:
      default: # 全局生效,所有微服务生效
        logger-level: FULL
    重启 OrderApplication 生效,当在 Postman 发送了一次查询请求后, OrderApplication 的控制台就出现了全部的 HTTP 日志信息。

2)局部生效

feign:
  client:
    config:
      userservice: # 只在远程调用userservice这个微服务时才生效
        logger-level: FULL

3. 方式二:Java代码

    在 OrderApplication 中创建 Feign 配置类 config/DefaultFeignConfiguration.java ,声明 Bean 。 public class DefaultFeignConfiguration { @Bean public Logger.Level loggerLevel() { return Level.BASIC; } } 该类没有被 Spring 容器管理,因此不会生效。还需要进行下面的配置才能生效。

1)全局配置

    在启动类的 @EnableFeignClients 注解上添加参数,指定 Feign 的配置类。 @EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class)

2)局部配置

    放到 Feign 客户端接口的注解 @FeignClient 之中。 @FeignClient(value = "userservice", configuration = DefaultFeignConfiguration.class)
经验分享 程序员 微信小程序 职场和发展