Feign提供了日志打印功能,我们可以通过配置来调整日志级别,从而了解Feign中Http请求的细节。说白了就是对Feign接口调用情况的监控和输出
Feign日志级别:
- BASIC log信息包含请求方法,请求URL,响应时间
- FULL 请求+请求body+返回数据
- HEADERS 请求头+基本请求信息
- NONE:默认不打印
FeignClient日志配置方式
1 全局配置
@Configuration
public class FeignConfig {
@Bean
public Logger.Level feignLogLevel(){
//设置feign客户端的日志打印级别为FULL
return Logger.Level.FULL;
}
}
由于OpenFeign的默认日志级别为NONE,不记录任何请求信息;修改完FeignClient日志设定后,由于SpringBoot默认的日志级别是info,而FeignClient日志级别是debug,debug<info,当前设定修改后,任然不会生效。 因此需要修改application.yml中的日志打印级别为debug
# springboot 默认的日志级别是 info
logging:
# 声明指定的feign service 服务的日志级别为debug,可以打印出服务调用的详情
level:
# com.base.servie服务接口client所在的包路径
com.base.service: debug
2局部配置【针对于指定的服务】
2.1配置类+ @FeignClient
//不需要加Configuration注解
public class FeignConfig {
@Bean
public Logger.Level feignLogLevel(){
//设置feign客户端的日志打印级别为FULL
return Logger.Level.FULL;
}
}
//configuration属性,值为Class,配置信息对名称为userprivilege的服务生效
@Resource
@FeignClient(name="userprivilege",fallback = FallBack_PrivilegeService.class ,configuration = FeignConfig.class)
public interface PrivilegeService {
/**
* 根据系统id获得配置系统信息
* @param systemsId
* @return
*/
@GetMapping(value = "/systems/getSystemById/{systemsId}")
ReturnMessageModel<AppSystemsInfo> getSystemById(@PathVariable("systemsId") String systemsId);
/**
* 插入配置系统信息
* @param systemsInfo
* @return
*/
@PostMapping("/insertSystemsInfo")
ReturnMessageModel insertSystemsInfo(AppSystemsInfo systemsInfo);
}
2.2修改Application.yml配置文件
feign:
#配置生命服务调用的日志打印级别
client:
config:
#服务名称 userprivilege
userprivilege:
#日志打印模式为FULL,记录所有的请求信息
loggerlevel: FULL
3 服务调用,打印日志信息
Basic日志
Full日志