【Spring Cloud】如何修改Feign的日志记录级别

news2024/11/15 9:16:11

本期目录

  • 前言
  • 1. 介绍
  • 2. 方式一:配置文件
    • 1)全局生效
    • 2)局部生效
  • 3. 方式二:Java代码
    • 1)全局配置
    • 2)局部配置



前言

  • 本次示例代码的文件结构如下图所示。
    在这里插入图片描述

1. 介绍

  • Feign 允许我们自定义配置,下面是 Feign 可以修改的配置。

    类型作用说明
    feign.Logger.Level修改日志级别包含四种不同级别:NONE、BASIC、HEADERS、FULL
    feign.codec.Decoder响应结果的解析器HTTP 远程调用的结果做解析,例如解析 JSON 字符串反序列化成 Java 对象
    feign.codec.Encoder请求参数编码将请求参数编码,便于通过 HTTP 请求发送
    feign.Contract支持的注解格式默认是 Spring MVC 的注解
    feign.Retryer失败重试机制请求失败的重试机制,默认是没有,不过会使用 Ribbon 的重试
  • 一般我们需要配置日志级别。NONE 是不记录,BASIC 只记录基本的 HTTP 请求信息,HEADERS 除了基本的 HTTP 信息外,还记录请求头;而 FULL 则是记录完整的 HTTP 信息。换句话说,按日志完整程度从小到大排序为:NONE < BASIC < HEADERS < FULL 。

  • 实际开发中,推荐使用 BASIC 。因为记录日志会消耗一定的性能。


2. 方式一:配置文件


1)全局生效

  • order-service 的配置文件。
feign:
  client:
    config:
      default: # 全局生效,所有微服务生效
        logger-level: FULL
  • 重启 OrderApplication 生效,当在 Postman 发送了一次查询请求后, OrderApplication 的控制台就出现了全部的 HTTP 日志信息。

    image-20230213124643902


2)局部生效

feign:
  client:
    config:
      userservice: # 只在远程调用userservice这个微服务时才生效
        logger-level: FULL

3. 方式二:Java代码

  • OrderApplication 中创建 Feign 配置类 config/DefaultFeignConfiguration.java ,声明 Bean 。

    public class DefaultFeignConfiguration {
    
        @Bean
        public Logger.Level loggerLevel() {
            return Level.BASIC;
        }
        
    }
    
  • 该类没有被 Spring 容器管理,因此不会生效。还需要进行下面的配置才能生效。


1)全局配置

  • 在启动类的 @EnableFeignClients 注解上添加参数,指定 Feign 的配置类。

    @EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class)
    

2)局部配置

  • 放到 Feign 客户端接口的注解 @FeignClient 之中。

    @FeignClient(value = "userservice", configuration = DefaultFeignConfiguration.class)
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes集群部署springcloud项目【AL】【未写完】

kubernetes集群部署springcloud项目【AL】 &#xff08;先手工做&#xff0c;非自动化&#xff09; #环境&#xff1a; 192.168.73.138 master 192.168.73.139 node1 192.168.73.140 node2 192.168.73.137 harbor、mysqlgit clone https://github.com/lizhenliang/simple-…

leetcode.1234 替换子串得到平衡字符串 - 反向滑动窗口

1234. 替换子串得到平衡字符串 题目&#xff1a; 有一个只含有 Q, W, E, R 四种字符&#xff0c;且长度为 n 的字符串。 假如在该字符串中&#xff0c;这四个字符都恰好出现 n/4 次&#xff0c;那么它就是一个「平衡字符串」。 给你一个这样的字符串 s&#xff0c;请通过「替换…

信息安全管理

信息安全管理信息安全管理信息安全风险管理信息安全管理体系应急响应与灾难恢复应急响应概况信息系统灾难修复灾难恢复相关技术信息安全管理 管理概念&#xff1a;组织、协调、控制的活动&#xff0c;核心过程的管理控制 管理对象和组成&#xff1a;包括人员在内相关资产&…

【ArcGIS Pro二次开发】(3):UI管理_显示隐藏Tab、Group、Control等控件

在ArcGIS Pro工作中&#xff0c;有时候会涉及到工具栏UI的管理&#xff0c;比如&#xff0c;打开模型构建器时&#xff0c;工具栏才会出现新的选项卡(Tab)【ModelBuilder】&#xff0c;工程未做更改&#xff0c;则【保存】按钮显示灰色不可用。 下面以一个小例子来学习一下。 一…

VScode+cuda编程:常见环境问题

VScodecuda&#xff1a;常见环境配置问题1、VScode终端问题(PS)2、编译问题(CUDA版本过低)3、nvcc编译问题(arch架构)1、VScode终端问题(PS) 问题描述&#xff1a; 在VScode下打开终端执行nvcc指令&#xff0c;发现执行不了&#xff0c;但是在外部终端powershell和cmd都可以。…

波奇学c语言:代码的编译和链接

test.c&#xff08;源文件&#xff09;->编译->test.obj&#xff08;目标文件&#xff09;->链接->test.exe&#xff08;可执行文件&#xff09;编译1.预编译&#xff08;预处理&#xff09;&#xff1a;text.c->text.i使用gcc -E test.c 进行停止预处理指令&am…

Java修饰符和运算符,超详细整理,适合新手入门

目录 一、访问控制修饰符 1、访问权限 二、运算符 1、算术运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、三元运算符 一、访问控制修饰符 Java 支持 4 种不同的访问权限&#xff1a; private 私有的 protected 受保护的 public 公共的 default 默认 1、…

【手写 Vuex 源码】第九篇 - Vuex 响应式数据和缓存的实现

一&#xff0c;前言 上一篇&#xff0c;主要介绍了 Vuex 的 State 状态安装&#xff0c;主要涉及以下几个点&#xff1a; State 状态的安装逻辑&#xff1b;两个核心问题的思路&#xff1b;代码实现以及执行情况分析&#xff1b; 本篇&#xff0c;继续介绍 Vuex 模块相关概念…

计算机组成原理(五)

3.理解主存储器与CPU的连接原理&#xff1b;   主存通过数据总线、地址总线和控制总线与CPU连接&#xff1b;   数据总线的位数与工作频率的乘积正比于数据传输率&#xff1b;   地址总线的位数决定了可寻址的最大内存空间&#xff1b;   控制总线&#xff08;读/写&am…

excel操作实例:如何制作一个学习计划阶段图表

预则立不预则废。不管是为了避免被裁员的窘迫&#xff0c;还是为了获得更高的薪水&#xff0c;都有必要在2023年尽快学精Excel&#xff0c;成为行业高手。教程把要成为Excel高手的几道坎&#xff0c;也是要攻克的目标做成图表&#xff0c;希望大家的努力更有效。要变成Excel高手…

Redis 缓存穿透、缓存击穿和缓存雪崩

Redis 缓存穿透和缓存雪崩 缓存穿透和缓存雪崩这两个概念和知识点我们一定要掌握&#xff0c;因为我们工作中经常会遇到缓存穿透和缓存雪崩的情况。 Redis 缓存穿透&#xff08;查不到&#xff09; 缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在…

【遇见青山】项目难点:集群下的分布式锁问题

【遇见青山】项目难点&#xff1a;集群下的分布式锁问题1.问题简介2.分布式锁分析3.基于Redis实现分布式锁1.0版本4.基于Redis实现分布式锁2.0版本&#xff0c;解决锁误删问题5.基于Redis实现分布式锁3.0版本&#xff0c;解决锁的原子性问题1.问题简介 在《【遇见青山】项目难…

Sliver取代Cobalt Strike成黑客渗透工具“新宠”

8月25日消息&#xff0c;攻击者逐渐弃用Cobalt Strike渗透测试套件&#xff0c;转而使用不太知名的类似框架。开源跨平台工具Sliver正取代Brute Ratel成为受攻击者青睐的武器。 在过去的几年里&#xff0c;Cobal Strike被各类攻击者滥用&#xff08;包括勒索软件操作&#xff…

行为型模式 - 模板方法模式Template Method

学习而来&#xff0c;代码是自己敲的。也有些自己的理解在里边&#xff0c;有问题希望大家指出。 模式的定义与特点 模板方法&#xff08;Template Method&#xff09;&#xff0c;模式的定义如下&#xff1a;定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类…

JavaSE XML解析技术的使用详解

文章目录XML解析技术XML解析技术介绍Dom4j解析XML文件Dom4j解析各个节点Dom4j解析案例实战XML解析技术 XML解析技术介绍 XML的数据作用是什么? 最终需要怎样处理? 作用: 存储数据、做配置信息、进行数据传输。 最终需要被程序进行读取&#xff0c;解析里面的信息。 XML解析…

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Python蓝桥杯训练:基本数据结构 [链表]

Python蓝桥杯训练&#xff1a;基本数据结构 [链表] 文章目录Python蓝桥杯训练&#xff1a;基本数据结构 [链表]一、链表理论基础知识二、有关链表的一些常见操作三、力扣上面一些有关链表的题目练习1、[移除链表元素](https://leetcode.cn/problems/remove-linked-list-element…

TCP报头详解及TCP十种核心机制(一)

目录 前言&#xff1a; TCP报头 TCP核心机制 一、确认应答 二、超时重传 小结&#xff1a; 前言&#xff1a; 这篇文章详细介绍了TCP报头中的一些核心数据&#xff0c;及两种TCP核心机制。其他的一些机制会在后面文章中详细介绍。 TCP报头 解释&#xff1a; 1&#xff…

电商仓储与配送云仓是什么?

仓库是整个供给链的关键局部。它们是产品暂停和触摸的点&#xff0c;耗费空间和时间(工时)。空间和时间反过来也是费用。经过开发数学和计算机模型来微调仓库的规划和操作&#xff0c;经理能够显著降低与产品分销相关的劳动力本钱&#xff0c;进步仓库空间应用率&#xff0c;并…

docker/docker-compose 安装mysql5.7

目录使用docker安装mysql5.7docker普通安装docker生产环境安装使用docker-compose 安装注意注意一:docker-compose权限问题注意二:docker pull 找不到镜像使用docker安装mysql5.7 docker普通安装 docker pull mysql:5.7 # 启动容器 docker run -p 3306:3306 --name mysql -e …