1.配置类
@Configuration
public class FeignConfig {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
public Decoder decode() {
return new OpenFeignInterceptor(new OptionalDecoder(new ResponseEntityDecoder(new SpringDecoder(this.messageConverters))));
}
}
- 日志切面
@Slf4j
public class OpenFeignInterceptor implements Decoder {
private final Decoder delegate;
public OpenFeignInterceptor(Decoder delegate) {
this.delegate = delegate;
}
@Override
public Object decode(Response response, Type type) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = response.body().asInputStream().read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, bytesRead);
}
byte[] body = byteArrayOutputStream.toByteArray();
String bodyStr = new String(body, StandardCharsets.UTF_8);
log.info("接口地址:{}", response.request().url());
if (Request.HttpMethod.POST == response.request().httpMethod() && response.request().body() != null) {
log.info("接口参数:{}", new String(response.request().body()));
}
log.info("接口返回:{}", bodyStr);
return delegate.decode(response.toBuilder().body(bodyStr, StandardCharsets.UTF_8).build(), type);
}
}
1338

被折叠的 条评论
为什么被折叠?



