伪造日志记录不起作用

2022-09-01 05:46:44

我正在尝试为来自Feing rest客户端的每个请求进行日志记录。但是,我无法使日志记录正常工作,而“标准”Slf4j日志记录确实有效。

我有以下几点:

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
    }

答案 1

您需要在 application.properties 中配置日志记录,如下所示:

logging.level.<package path>.MyClient=DEBUG

如果您使用的是 application.yml,那么:

logging.level.<package path>.MyClient: DEBUG

可以设置日志级别以告诉Feiign要记录多少。

选项包括:

  • 无,无日志记录(默认)
  • BASIC,仅记录请求方法和URL以及响应状态代码和执行时间
  • 标头,记录基本信息以及请求和响应标头
  • FULL,记录请求和响应的标头、正文和元数据

例:

logLevel(feign.Logger.Level.NONE)
or
logLevel(feign.Logger.Level.BASIC)
or
logLevel(feign.Logger.Level.HEADERS)
or
logLevel(feign.Logger.Level.FULL)

有关更多详细信息,请参阅此处


答案 2

这就是我能够使用自定义配置类进行记录的方式

注意假装日志记录仅响应 DEBUG 级别。

配置类

@Configuration
public class UserClientConfig {

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.HEADERS;
    }
} 

客户

@FeignClient(name = "User", url = "http://localhost:8080",configuration=UserClientConfig.class)
public interface UserClient {

    @RequestMapping(method = RequestMethod.GET, value = "/user")
    List<User> getAllUsers();    

}

应用程序.属性

logging.level.<pcakgepath>.UserClient: DEBUG

推荐