Feign 的日志

Feign的日志

很多场景下,需要了解 Feign 处理请求的具体细节, 那么如何满足这种需求呢?

简单介绍

Feign 对日志的处理非常灵活, 可为每个 Feign 客户端指定日志记录策略 , 每个 Feign 客户端都会创建一个logger。
默认情况下, logger的名称是 Feign 接口的完整类名。需要注意的是, Feign 的日志打印只会对 DEBUG 级别做出响应。
我们可为 每个 Feign 客户端配置各自的 Logger.Level 对象,告诉 Feign 记录哪些日志。Log­
ger.Level 的值有以下选择。

.NONE: 不记录任何日志( 默认值)。
.BASIC : 仅记录请求方法 、URL、响应状态代码以及执行时间。
.HEADERS: 记录 BASIC 级别的基础上, 记录请求和响应的 header。
.FULL: 记录请求和响应的header , body 和元数据。

为前面编写的UserFeignClient 添加日志打印, 将它的日志级 别设置为FULL。
1 找到 comsumer 项目
2 编写 Feign 配置类创建一个包config

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfiguration {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
        /*
        full:返回所有日志
        NONE:不返回日志
        BASIC:
        HEADERS:
         */
    }
}

3 修改 Feign 的接口, 指定配置类

@FeignClient(name = "provider",configuration = MyConfiguration.class)
@Component
public interface UserFeignClient {
    @RequestMapping("user/{id}")
    public User findById(@PathVariable(value = "id") Integer id);
    //restful传多个参
    @RequestMapping("search/{id}/{username}/{name}")
    public User search(@PathVariable(value = "id") Integer id,@PathVariable("username") String username,@PathVariable("name") String name);
    @RequestMapping("search2")
    public User search2(@RequestParam("id") Integer id, @RequestParam("username") String username, @RequestParam("name") String name);
}

4 在 application.yml 中添加以下内容, 指定 Feign 接口的日志级别为DEBUG:

logging:
  level:
    com.itzz.springcloudconsumer: DEBUG

5 测试
重启后访问
Feign 的日志_第1张图片

2020-07-20 15:10:55.922 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] <--- HTTP/1.1 200 (433ms)
2020-07-20 15:10:55.922 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] content-type: application/json;charset=UTF-8
2020-07-20 15:10:55.922 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] date: Mon, 20 Jul 2020 07:10:55 GMT
2020-07-20 15:10:55.922 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] transfer-encoding: chunked
2020-07-20 15:10:55.922 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] 
2020-07-20 15:10:55.925 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] {"id":1,"username":"account1","name":"张 三","age":20,"balance":100.00}
2020-07-20 15:10:55.925 DEBUG 15124 --- [nio-8010-exec-1] c.i.s.api.UserFeignClient                : [UserFeignClient#findById] <--- END HTTP (73-byte body)

你可能感兴趣的:(java)