feignconfig,feign 配置

  feignconfig,feign 配置

  

目录

SpringBoot集成的佯配置全局日志概述将佯接口日志级别设置为完整佯常见配置佯合成如何集成佯首先如何将日志级别添加到佯细粒度全局配置佯支持的配置项目功能区配置与佯配置佯代码模式与配置属性模式

 

  

SpringBoot集成feign配置全局log

 

  在00-1010项目中使用Feign进行远程调用。有时,为了解决问题,有必要打开请求和响应日志。下面简单介绍一下如何打开Feign logs。

  

概述

在application.yml添加log配置

 

  模式1: 3360在启动类路径中设置调试级别日志(推荐)

  logging : level 3360 com . example . demo 3360 debug Mode 2 3360在configuration @FeignClien的类路径中设置调试级别的日志。

  日志:级别: com . example . demo . feign . demofeignclient :调试配置feign的日志级别

  方法:在application.yml中配置(推荐)

  feign . client . config . default . logger级别3360全模式2 :使用@Configuration配置类完成配置。

  @Configurationpublic类FeignConfiguration { @Bean公共记录器。Level level() {返回记录器。水平。满;} }Feign日志级别

  无,无记录(默认)。BASIC,只记录请求方法和URL,以及响应状态代码和执行时间。头,记录基本信息以及请求和响应头。完整,记录请求和响应的头文件、正文和元数据。

  

设置Feign接口日志级别为FULL

 

  00-1010日志级打印内容NONE(默认)不记录任何日志基本记录只有请求方法、URL、响应状态码和执行时间(适用于生产环境)。HEADERS记录请求,response HEADERSFULL根据基本级别在header、body和metadata中记录请求chord。

  

feign常用配置

遵循SpringBoot的三板斧第一步:加依赖

 

  依赖groupIdorg.springframework.cloud/groupId artifactId spring-cloud-starter-open feign/artifactId/依赖第二步:写注解

  @EnableFeignClients //将第三步:写配置添加到启动类

  

Feign的组成

 

  00-1010方式一:电码实施的第一步

  添加Feign configuration类,可以添加在main类下,但是不需要添加@Configuration。如果添加@Configuration,放在main类下,所有的Feign client实例都会共享,父子上下文加载像Ribbon configuration类一样冲突;如果您必须添加@Configuration,请将其放在主类load之外的包中。建议不要添加@Configuration。

  公共类FeignConfig { @Bean公共记录器。Level Logger() {返回Logger。水平。满;}}第二步:给@Fe

  ignClient添加配置类

  

//@FeignClient configuration = GoodsFeignConfig.class 细粒度配置,指定配置类@FeignClient(name = "goods", configuration = FeignConfig.class)

第三步:写配置

 

  

logging: level: com.xxx.xxx.FeignAPI: DEBUG #需要将FeignClient接口全路径写上# 开启日志 格式为logging.level. Feign客户端路径

方式二:配置属性实现

 

  

feign: client: config: #想要调用的微服务名称 server-1: loggerLevel: FULL

 

  

全局配置

方式一:代码实现添加了@Configuration放在了主类之下,那么就会所有Feign客户端实例共享,同Ribbon配置类一样父子上下文加载冲突;让父子上下文ComponentScan重叠(强烈不建议)唯一正确方式

 

  

//在启动类上为@EnableFeignClients注解添加defaultConfiguration配置@EnableFeignClients(defaultConfiguration = FeignConfig.class)

方式二:配置属性实现

 

  

feign: client: config: #将调用的微服务名称改成default就配置成全局的了 default: loggerLevel: FULL

 

  

Feign支持的配置项

代码方式

 

  配置项作用Logger.Level指定日志级别Retryer指定重试策略ErrorDecoder指定错误解码器Request.Options超时时间Collection拦截器SetterFactory用于设置Hystrix的配置属性,Fgien整合Hystrix才会用配置属性

  

feign: client: config: feignName: connectTimeout: 5000 # 相当于Request.Optionsn 连接超时时间 readTimeout: 5000 # 相当于Request.Options 读取超时时间 loggerLevel: full # 配置Feign的日志级别,相当于代码配置方式中的Logger errorDecoder: com.example.SimpleErrorDecoder # Feign的错误解码器,相当于代码配置方式中的ErrorDecoder retryer: com.example.SimpleRetryer # 配置重试,相当于代码配置方式中的Retryer requestInterceptors: # 配置拦截器,相当于代码配置方式中的RequestInterceptor - com.example.FooRequestInterceptor - com.example.BarRequestInterceptor # 是否对404错误解码 decode404: false encode: com.example.SimpleEncoder decoder: com.example.SimpleDecoder contract: com.example.SimpleContract

Feign还支持对请求和响应进行GZIP压缩,以提高通信效率,配置方式如下:

 

  

# 配置请求GZIP压缩feign.compression.request.enabled=true# 配置响应GZIP压缩feign.compression.response.enabled=true# 配置压缩支持的MIME TYPEfeign.compression.request.mime-types=text/xml,application/xml,application/json# 配置压缩数据大小的下限feign.compression.request.min-request-size=2048

 

  

Ribbon配置 VS Feign配置

粒度RibbonFeign代码局部@RibbonClient(configuration=RibbonConfig.class),RibbonConfig类必须加@Configuration,且必须放在父上下文无法扫到的包下@FeignClient(configuration=FeignConfig.class),FeignConfig类的@Configuration可以不加(可选),如果有,必须放在父上下文无法扫到的包下代码全局@RibbonClients(defaultConfigurtion=RibbonConfig.class)@EnableFeignClients(defaultConfiguration = FeignConfig.class)...配置属性局部.ribbon.NFLoadBalancerClassName...feign.client.config..loggerLevel...配置属性全局无feign.client.config.default.loggerLevel

 

  

Feign 代码方式 VS 配置属性方式

配置方式有点缺点代码配置基于代码,更加灵活如果Feign的配置类加了@Configuration注解,需注意父子上下文,线上修改需要重打包,发布属性配置易上手配置更加直观线上修改无需重新打包,发布优先级更高极端场景下没有代码配置更加灵活优先级:细粒度属性配置 > 细粒度代码配置 > 全局属性配置 > 全局代码配置

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: