介紹注解 @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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM