Spring Cloud OpenFeign - 日志配置
创始人
2024-04-13 06:53:51

项目源码地址:https://download.csdn.net/download/weixin_42950079/87168704



OpenFeign 有 4 种日志级别:

  • NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)。
  • BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)。
  • HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息。
  • FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)。

1. 设置OpenFeign日志级别

需要注意的是:OpenFeign 的日志配置分为 全局配置局部配置

  • 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用。
  • 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用。

1.1 全局配置

import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用* 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用*/@Configuration
public class feignConfig {/*** OpenFeign日志级别:*      NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)*      BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)*      HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息*      FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)*/@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}
}

1.2 局部配置(一)

1)在配置类中,设置 OpenFeign 的日志级别,但记得不要添加@Configuration注解,否则就变成全局配置啦。

import feign.Logger;
import org.springframework.context.annotation.Bean;/*** 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用* 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用*/
public class feignConfig {/*** OpenFeign日志级别:*      NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)*      BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)*      HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息*      FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)*/@Beanpublic Logger.Level feignLoggerLevel(){return Logger.Level.FULL;}
}

2)在 OpenFeign 接口中的@FeignClient注解中,添加configuration注解来指定该 OpenFeign 接口使用的配置类,配置类中包含对 OpenFeign 接口的扩展,如日志级别等…

import com.cd.order8010.config.OpenFeignConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;/*** 添加 Feign 接口和方法:* * name:指定调用rest接口所对应的服务名* * path:指定调用rest接口所在的StockController指定的RequestMapping的路径,如果StockController上没有RequestMapping,则不指定path属性*/
@FeignClient(name = "stock-service", path = "/stock", configuration = OpenFeignConfig.class)
public interface StockFeignService {// 声明要调用的rest接口对应的方法@RequestMapping("/reduce")public String reduce();}

cd


1.2 局部配置(二)

  • 除了上面的方式可以进行 OpenFeign 局部配置之外,还可以直接在 yml 配置文件中进行 OpenFeign 局部配置。
#springboot默认日志级别是info,openfeign调试级别是debug级别,所以openfeign日志信息不会输出,需要将openfeign接口的调试级别设置成debug级别
logging:level:com.cd.order8010.feign: debug# openfeign日志局部配置
feign:client:config:stock-service: #对应的微服务实例名称logger-level: FULL

2. 配置OpenFeign日志后,无法输出日志信息

OpenFeign 的默认日志级别是 NONE 级别,也就是不记录任何日志信息。但为什么按上面步骤将 OpenFeign 的日志级别设置成 FULL 级别后,还是没有打印日志信息呢?

  • 这是因为 OpenFeign 的调试日志是以 debug 级别来输出的。而 Spring Boot 默认的日志级别是 info 级别。info 级别是大于 debug 级别的,所以 debug 级别的日志(OpenFeign日志)不会输出。

所以,想要输出 OpenFeign 日志信息,需要将 OpenFeign 接口的日志调试级别设置成 debug 级别。这一步在application.yml配置文件中进行。
cd

#springboot默认日志级别是info,openfeign调试级别是debug级别,所以openfeign日志信息不会输出,需要将openfeign接口的调试级别设置成debug级别
logging:level:com.cd.order8010.feign: debug

相关内容

热门资讯

最新或2023(历届)公关活动... 公关策划文案,又称"公共关系专题活动策划书",是开展公关实务活动前必须做的一项工作。一个策划文案,表...
爱心辅导捐助倡议书 爱心辅导捐... 爱心辅导捐助倡议书  穗星社会工作服务中心与素社街道办事处和海青素质教育培训中心、青志愿者协会社区教...
无烟学校倡议书 无烟学校倡议书... 无烟学校倡议书  各位同学:  大家好!  众所周知,在世界范围内,吸烟是最普遍的可致死的嗜好。一支...
积极参与市容卫生环境整治活动倡... 积极参与市容卫生环境整治活动倡议书文明委:  为了落实市容卫生环境不治工作,进一步加大实施“三优”工...
班级活动倡议书 班级活动倡议书... 班级活动倡议书  亲爱的同学们:  你们有听过名人的故事吗?知道名人小时候有趣的事情吗?让我们一起来...