I'm trying to get logging working for each request from a Feign rest client. However I cannot get the logging to work, while 'standard' Slf4j logging does work.
I have the following:
public MyClient() { initConnectionProperties(); this.service = Feign.builder() .contract(new JAXRSContract()) .decoder(getJacksonDecoder()) .encoder(getJacksonEncoder()) .requestInterceptor(new BasicAuthRequestInterceptor(user, password)) //.client(new OkHttpClient()) .logger(new Slf4jLogger(MyClient.class)) //not working .logLevel(feign.Logger.Level.BASIC) .target(MyClient.class, this.url); logger.info("Connection parameters: url = " + url + ", user = " + user); //Is working }
You need to configure logging in application.properties as below:
logging.level.<package path>.MyClient=DEBUG
If you're using application.yml then:
logging.level.<package path>.MyClient: DEBUG
The log level can be set to tell Feign how much to log.
Options are:
Example:
logLevel(feign.Logger.Level.NONE) or logLevel(feign.Logger.Level.BASIC) or logLevel(feign.Logger.Level.HEADERS) or logLevel(feign.Logger.Level.FULL)
For more details, you can refer this
This is how i was able to log using Custom Config class
Note Feign logging only responds to the DEBUG level.
Config Class
@Configuration public class UserClientConfig { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.HEADERS; } }
Client
@FeignClient(name = "User", url = "http://localhost:8080",configuration=UserClientConfig.class) public interface UserClient { @RequestMapping(method = RequestMethod.GET, value = "/user") List<User> getAllUsers(); }
application.properties
logging.level.<pcakgepath>.UserClient: DEBUG
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With