Spring Cloud Feign 之日志自定义扩展
环境信息: java 1.8、Spring boot 1.5.10.RELEASE、spring cloud-Edgware.SR3、maven 3.3+
与外部HTTP接口交互时需要记录一些请求和响应日志来排查问题,虽然Feign支持但它的日志是Debug级别,并不符合我们在生产中使用INFO级别日志要求,所以这章介绍下自定义日志输出。
分析Spring Cloud Feign 默认日志
首先看下spring cloud feign 对日志输出的处理
package org.springframework.cloud.netflix.feign;
import feign.Logger;
/**
* Allows an application to use a custom Feign {@link Logger}.
*
* @author Venil Noronha
*/
public interface FeignLoggerFactory {
/**
* Factory method to provide a {@link Logger} for a given {@link Class}.
*
* @param type the {@link Class} for which a {@link Logger} instance is to be created
* @return a {@link Logger} instance
*/
public Logger create(Class<?> type);
}
通过源码我们知道spring cloud feign 已经对feign的日志输出这块做了扩展,当然feign本身也可以,这里针对spring cloud feign 进行讲解。
FeignLoggerFactory
是Feign日志工厂接口类,DefaultFeignLoggerFactory
是它的默认实现,spring cloud feign 就是用的 DefaultFeignLoggerFactory
@Override
public Logger create(Class<?> type) {
return this.logger != null ? this.logger : new Slf4jLogger(type);
}
默认日志工厂使用Slf4jLogger
日志,然后我们看下源码
package feign.slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import feign.Request;
import feign.Response;
public class Slf4jLogger extends feign.Logger {
priv