介绍注解 @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
介绍注解 @FeignClient 日志打印功能的更多相关文章
- Android 各层中日志打印功能的应用
1. HAL层 头文件:#include <utils/Log.h> 对应的级别 打印方法 VERBOSE LOGV()DEBUG LOGD()INFO LOGI()WARN LOGW() ...
- 自定义springboot - starter 实现日志打印,并支持动态可插拔
1. starter 命名规则: springboot项目有很多专一功能的starter组件,命名都是spring-boot-starter-xx,如spring-boot-starter-loggi ...
- python 日志打印之logging使用介绍
python 日志打印之logging使用介绍 by:授客QQ:1033553122 测试环境: Python版本:Python 2.7 简单的将日志打印到屏幕 import logging lo ...
- SpringBoot自定义注解、AOP打印日志
前言 在SpringBoot中使用自定义注解.aop切面打印web请求日志.主要是想把controller的每个request请求日志收集起来,调用接口.执行时间.返回值这几个重要的信息存储到数据库里 ...
- DevExpress打印功能介绍 z
一.打印功能说明: 打印功能,我们有多种实现方式,可以根据需要自行选择,我简单的总结下两种方法. (1).使用微软.net框架自带的PrintDocument,这种方式是直接借助Graphics,自行 ...
- 利用Spring AOP自定义注解解决日志和签名校验
转载:http://www.cnblogs.com/shipengzhi/articles/2716004.html 一.需解决的问题 部分API有签名参数(signature),Passport首先 ...
- (转)利用Spring AOP自定义注解解决日志和签名校验
一.需解决的问题 部分API有签名参数(signature),Passport首先对签名进行校验,校验通过才会执行实现方法. 第一种实现方式(Origin):在需要签名校验的接口里写校验的代码,例如: ...
- 简单的aop实现日志打印(切入点表达式)
Spring中可以使用注解或XML文件配置的方式实现AOP. 1.导入jar包 com.springsource.net.sf.cglib -2.2.0.jar com.springsource.or ...
- python 项目实战之logging日志打印
官网介绍:https://docs.python.org/2/library/logging.html 一. 基础使用 1.1 logging使用场景 日志是什么?这个不用多解释.百分之九十的程序都需 ...
- 常用Linux日志文件功能
/var/log目录下的20个Linux日志文件功能详解 : 如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日 ...
随机推荐
- MSBuild属性
MSBuild 属性 MSBuild属性是键值对的集合,提前声明好这些属性之后,整个项目的生成都可以引用这些属性. 属性名不区分大小写. 属性都是写在 PropertyGroup 标签中. 1.声明属 ...
- pandas 操作excel
一 Series 什么是series 相当于表格中的行和列,不同的设置可以按行或列排序 2.series 创建 空的series import pandas as pd s2=pd.Series() ...
- 【前端动画】—— 再看tweenJS
16开始接触前端,一直对一个问题特别感兴趣,那就是js动画,也就是从那时起开始探究动画的各种表现形式,也是那个时候开始意识到编程这块东西最终考验的就是抽象和逻辑,而这一切完全是数学里边的东西. 最早接 ...
- linux服务器开启BBR
BBR TCP拥塞控制算法,是 Google 为优化网络传输性能而研发的网络优化协议,尤其是在高延迟.高丢包的网络环境下可以显著提升网络传输效率,改善用户体验.开启 BBR 的主要好处: 提高带宽利用 ...
- helm Error: INSTALLATION FAILED: cannot re-use a name that is still in use
前言 使用helm安装服务报错,修改chat后重新安装报错:安装失败:无法重复使用仍在使用的名称 解决方法 1.查找安装失败的服务 helm -n {namespace} ls -a 2.删除安装失败 ...
- ant design pro git提交error; Angular 团队git提交规范
前言 在使用 ant design pro 时,git 提交报错 > running commit-msg hook: fabric verify-commit ERROR 提交日志不符合规范 ...
- Flask快速入门4-蓝图
十六,Flask 用蓝图实现模块化的应用 1,Flask 为什么使用蓝图? Flask 中的蓝图为这些情况设计: 把一个应用分解为一个蓝图的集合.这对大型应用是理想的.一个项目可以实例化 一个应用对象 ...
- Java工程师应该掌握的知识
https://pan.baidu.com/s/1pXKwwVwE_g9RhjGrbABcUAydvn 以Java工程师应该掌握的知识,按重要程度排出六个梯度: 第一梯度:计算机组成原理.数据结构和算 ...
- 通过百度地图 API V2.0 版本,进行地图坐标系转换
注意 先阅读参考链接 瞭月 的文章,再阅读本文. 其中,请求参数中 model 的含义: amap/tencent - 即:GCJ02 火星坐标系,由中国国家测绘局制订的地理信息系统的坐标系统. 由 ...
- 1000: 【编程入门】熟悉一下Online Judge的环境
1000: [编程入门]熟悉一下Online Judge的环境 题目描述 请不要笑.用来适应环境的题目,自然比较简单些. 计算2个整数的和.这两个整数都在1到100之间. 输入 输入只有一行,包括2个 ...