在某些API调用上禁用伪装日志记录

时间:2019-12-12 09:42:45

标签: spring spring-cloud-feign feign openfeign

我正在使用以下配置来启用使用伪装进行的API调用的记录

#Feign properties
feign:
  client:
    config:
      default:
        loggerLevel: full      

我的应用程序正在调用3个API,而feign正在正确记录所有3个API的请求和响应JSON。我想禁用其中一种API的日志记录。能否请您告知必要的配置。提前感谢

1 个答案:

答案 0 :(得分:0)

如果您有3个API的3个不同的伪装客户端,则可以通过这种方式简单地覆盖日志记录级别(假设您的伪装客户端称为“ feignClient2”):

#Feign properties
feign:
  client:
    config:
      default:
        loggerLevel: full   
      feignClient2:
        loggerLevel: none

但是,如果您有一个用于3个端点的伪客户端,则任务将变得更加复杂。您可以继承feign logger类(如果现在使用,则可以继承其任何子类,例如fe Slf4jLogger),并覆盖其logRequestlogAndRebufferResponse方法以不记录任何内容特定端点(您可以分别从requestresponse方法参数获取所需的信息)。然后将FeignLoggerFactory bean与您自己的记录器一起添加:

@Bean
public FeignLoggerFactory feignLoggerFactory() {
    return new DefaultFeignLoggerFactory(new CustomLogger());
}

它将覆盖FeignClientsConfiguration中的默认FeignLoggerFactory

总而言之,我建议您使用第一个选项(对于单独的伪装客户端)。但是,如果您选择第二个代码,那么如果您提供代码示例,我可以帮助您。