介绍注解 @FeignClient 日志打印功能

  OpenFegin的日志打印功能是什么?Feign提供了日志打印功能,可以通过配置来调整日志级别,从而了解Feign执行Http请求的细节。通俗地说,就是对Feign接口的调用情况进行监控和输出。

日志级别

  • NONE 默认的,不显示任何日志;

  • BASIC 仅记录请求方法、URL、响应状态码及执行时间;

  • HEADERS 除了BASIC中定义的信息之外,还打印请求和响应的头信息;

  • FULL 除了HEADERS中定义的信息之外,还打印请求和响应的正文及元数据。

配置日志

@Configuration
public class FeignLogConfiguration {

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

  FeignLogConfiguration类上添加了@Configuration注解,说明是全局配置,若注释掉此注解,则开启了局部配置。在yaml文件中配置哪个接口需要以什么日志级别进行监控:


 logging.level.com.swagger.demo.api.GithubFeignClient = DEBUG

  之所以把Feign接口的日志级别设置成DEBUG,是因为Feign的Logger.Level只对DEBUG作出响应。测试用例复用《Spring注解之@FeignClient注解使用方法》中的wiener/github/listContributors,依然调用 GithubFeignClient#listContributors。如果开启局部配置,就需要使用如下Client:

import com.swagger.demo.bean.Contributor;
import com.swagger.demo.config.FeignLogConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.ArrayList;
import java.util.List;

@FeignClient(name = "github", url = "${self.github.url}",
        configuration = FeignLogConfiguration.class,
        fallback = GithubFeignClient.DefaultFallback.class)
public interface GithubFeignClient {

    @GetMapping(value = "/repos/{owner}/{repo}/contributors")
    ResponseEntity<List<Contributor>> listContributors(
            @PathVariable("owner") String owner,
            @PathVariable("repo") String repo);

    /**
     * 容错处理类,当调用失败时,简单返回空list
     */
    @Component
    class DefaultFallback implements GithubFeignClient {
        @Override
        public ResponseEntity<List<Contributor>> listContributors(
                @PathVariable("owner") String owner,
                @PathVariable("repo") String repo) {
            return new ResponseEntity(new ArrayList<>(), HttpStatus.BAD_REQUEST);
        }
    }

}

后台日志查看

  切换FeignLogConfiguration中的日志级别并启动项目,访问wiener/github/listContributors,则可以看到内容不同的日志。

2022-02-10 20:20:16.792 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] ---> GET https://api.github.com/repos/openFeign/feign/contributors HTTP/1.1
2022-02-10 20:20:16.792 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] ---> END HTTP (0-byte body)
2022-02-10 20:20:17.119 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] <--- HTTP/1.1 200 OK (326ms)
2022-02-10 20:20:17.119 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] accept-ranges: bytes
2022-02-10 20:20:17.119 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] access-control-allow-origin: *
2022-02-10 20:20:17.119 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
...
2022-02-10 20:20:17.120 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] x-ratelimit-reset: 1644496768
2022-02-10 20:20:17.120 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] x-ratelimit-resource: core
2022-02-10 20:20:17.120 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] x-ratelimit-used: 11
2022-02-10 20:20:17.120 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] x-xss-protection: 0
2022-02-10 20:20:17.272 DEBUG 15199 --- [nio-8087-exec-9] com.swagger.demo.api.GithubFeignClient   : [GithubFeignClient#listContributors] <--- END HTTP (28116-byte body)

Reference

posted @ 2022-02-27 10:16  楼兰胡杨  阅读(1297)  评论(0编辑  收藏  举报