一、Feign的组成
| 接口 | 作用 | 默认值 |
| ------------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Feign.Builder | Feign的入口 | Feign.Builder |
| Client | Feign底层用什么去请求 | 和Ribbon配合时:LoadBalancerFeignClient<br />不和Ribbon配合时:Feign.Client.Default |
| Contract | 契约,注解支持 | SpringMVC Contract |
| Encoder | 解码器,用于将独享转换成HTTP请求消息体 | SpringEncoder |
| Decoder | 编码器,将相应消息体转成对象 | ResponseEntityDecoder | | Logger | 日志管理器 | Slf4jLogger | | RequestInterceptor | 用于为每个请求添加通用逻辑(拦截器,例子:比如想给每个请求都带上heared) | 无 |
Feign.Client.Default 利用的是我们默认的HttpURLConnection,他是没有连接池的。也没有资源管理这个概念,性能不是很好,
二、细粒度配置自定义
1、代码方式-指定日志级别
feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。
Feign设置方式就不同的,他有四个级别如下:
| 级别 | 打印日志内容 |
|---|---|
| NONE(默认值) | 不记录任何日志 |
| BASIC | 仅记录请求方法、URL、响应状态代码以及执行时间 |
| HEADERS | 记录BASIC级别的基础上,记录请求和响应的header |
| FULL | 记录请求和响应的header、body和元数据 |
1.1 指定springboot日志
Feign日志是基于Spring boot的日志所以先设置SpringBoot日志:
logging:
level:
com.msb: debug
1.2 创建配置类
BASIC使用于生产环境 FULL适用于开发环境
创建配置类UserFeignConfiguration ,注意这里并没有增加@Configuration
package com.msb.order.configuration;
import feign.Logger;
import org.springframework.context.annotation.Bean;
//这里不能增加@Configuration,如果添加了就会变为全局配置文件。
public class StockFeignConfiguration {
@Bean
public Logger.Level level(){
return Logger.Level.FULL;
}
}
更改请求feign的配置文件。
1.3 将配置类引入
2、属性方式-指定日志级别
feign.client.config.<feignName>.loggerLevel:full
logging:
level:
com.msb: debug
feign:
client:
config:
msb-stock:
loggerLevel: full
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情