Feign客户端日志级别干预pdf二进制内容



当前低于日志级别的pdf文件正在正确下载

logging:
level:
root: ${SERVER_LOG_LEVEL:INFO}
com:
abc:
feign: DEBUG

但是下面的一个配置文件损坏了

logging:
level:
root: ${SERVER_LOG_LEVEL:INFO}
com:
abc:
feign: INFO

Feign日志记录只响应DEBUG级别。

对于每个Feign客户端,默认情况下都会创建一个记录器。

我们可以为每个客户端配置的Logger.Level指示要记录的数量:

@Configuration
public class ClientConfiguration {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.BASIC;
}
}

有四种日志记录级别可供选择:

  1. NONE–无日志记录,这是默认设置
  2. BASIC–只记录请求方法、URL和响应状态
  3. HEADERS–将基本信息与请求和响应标头一起记录
  4. FULL–记录请求和响应的正文、标头和元数据

请阅读更多信息:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html

不确定这是否与您遇到的问题相同,但我们看到了完全相同的症状:伪造文件下载、在调试模式下工作、不在info/warn/error中工作。

在调试模式下,在某个时刻调用foreign的Logger.logAndRebufferResponse(),它读取响应的有效负载,并将其重新打包为具有ByteArrayInputStream有效负载的新响应。

另外,我们有一个自定义的HttpMessageConverter;事实证明,它从来没有在文件下载中正常工作,因为inputStream在关闭之前没有被完全读取(它在SynchronousMethodHandler.executeAndDecode()结束时被关闭(。它只是";工作";因为将日志级别设置为debug,所以foreign的Logger神奇地将重新打包作为请求/响应日志记录的一部分。通过将输入流重新打包为ByteArrayInputStream来修复自定义HttpMessageConverter对我们来说很有效

最新更新