当前低于日志级别的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;
}
}
有四种日志记录级别可供选择:
- NONE–无日志记录,这是默认设置
- BASIC–只记录请求方法、URL和响应状态
- HEADERS–将基本信息与请求和响应标头一起记录
- 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
对我们来说很有效