小工具知识网

当前位置: 首页 > 行业知识 > 工具篇--SpringCloud--openFeign--日志输出

行业知识

工具篇--SpringCloud--openFeign--日志输出

2026-11-08 02:00:52 来源:互联网转载

文章目录

  • 前言
  • 一、feign 接口日志级别的设置
    • 1.1 项目中接口日志的设置级别
    • 1.2 项目中接口日志级别要求:
    • 二、设置feign 日志级别:
      • 2.1 级别设置:
      • 2.2 feign 日志NONE, BASIC, HEADERS, FULL; 区别
      • 总结

        前言

        在项目中当使用openFeign 调用远程接口,当接口联调时可能需要对feign 接口调用的情况进行日志打印。


        一、feign 接口日志级别的设置

        1.1 项目中接口日志的设置级别

        logging:  level:    com.example.springmvctest.feign.api: debug

        其中 : com.example.springmvctest.feign.api 为 feign 接口对应的包路径,设置级别为debug/trace,demo 如下:

        1.2 项目中接口日志级别要求:

        应的包路径的日志级别为什么要是debug/trace 设置 为 info 或者error 不行吗?

        Feign 日志系统的行为取决于两个方面:Feign 日志级别和日志框架(如 SLF4J 与 Logback、Log4J2等)的具体配置。

        Feign 的日志级别(NONE、BASIC、HEADERS、FULL)决定了Feign 中记录哪些信息的范围。通过 Logger.Level 设置,你可以控制Feign生成的日志信息的多少,但这并不直接影响日志的输出。具体的输出则是由你的日志框架配置决定的。

        当你的日志配置文件(比如 logback.xml 或 application.properties)中为Feign客户端设置的日志级别为 INFO、ERROR 时,这意味着只会输出那些等级的日志消息。由于Feign 日志的记录通常是为了调试目的,要记录Feign的HTTP请求和响应细节,你必须将日志级别至少设置为 DEBUG:

        logging.level.com.yourclient.package=DEBUG

        INFO 级别通常意味着相对不太详细的操作消息,通常用于记录应用程序的运行状态,而不是用于调试目的。如果你将日志级别设置为 INFO 或更高的 ERROR,而Feign的日志级别设置为 BASIC、HEADERS 或 FULL,你将不会看到通过Feign发送的HTTP请求的具体细节,因为这些信息通常以 DEBUG 或 TRACE 级别记录。

        所以,为了使用Feign的日志记录功能,你应该设置日志级别至少为 DEBUG,使得Feign可以输出更详细的日志信息供调试。这是行业常规做法,尤其在开发和测试过程中。在生产环境中,你可能出于性能和日志磁盘空间的考虑,会将日志级别调整为 INFO 或 ERROR,此时Feign的详细日志就不会输出了。

        二、设置feign 日志级别:

        2.1 级别设置:

        方式 1:通过配置文件设置:

        feign:  client:    config:      applicationname:        logger-level: full

        其中 applicationname 为feign 接口对应的 name 名称。demo 如下:

        方式 2:通过java 代码设置:

        import feign.Logger;import org.springframework.context.annotation.Bean;public class SyncFeignConfig {    @Bean    Logger.Level feignLoggerLevel() {        return Logger.Level.NONE;    }}

        在feign 接口中引入改配置文件:

        import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;@FeignClient(name = "applicationname", url = "http://www.baidu.com",configuration = SyncFeignConfig.class)public interface SyncFeignService {    @GetMapping("/s")    String search(@RequestParam("wd") String wd);}

        如果 同时 通过配置文件设置 和java 设置了日志级别,则 配置文件设置 会覆盖java 代码的设置;

        2.2 feign 日志NONE, BASIC, HEADERS, FULL; 区别

        Feign 是一个声明式的 HTTP 客户端,它使得编写 HTTP 客户端服务变得更容易。Feign 提供了日志功能,使得开发者可以看到 HTTP 请求的完整周期和详细信息,帮助调试和跟踪请求。Feign 提供了不同级别的日志记录,分别是:

        1. NONE:不记录任何日志(默认值)。
        2. BASIC:仅记录请求方法和URL以及响应状态码和执行时间。
        3. HEADERS:记录基本信息加上请求和响应的头信息。
        4. FULL:记录请求和响应的头信息、正文和元数据。

        这些日志级别的不同之处在于它们所包含的信息量。下面详细介绍每个级别:

        • NONE

          不记录任何日志。如果选择此级别,所有的Feign调用都将不会被记录。

        • BASIC

          记录请求方法、URL、响应状态码以及请求的执行时间。例如:

          [main] DEBUG feign.Logger - [UserService#getUser] ---> GET http://myapi/user/12345 HTTP/1.1[main] DEBUG feign.Logger - [UserService#getUser]  GET http://myapi/user/12345 HTTP/1.1Host: myapiContent-Type: application/json[main] DEBUG feign.Logger - [UserService#getUser]  GET http://myapi/user/12345 HTTP/1.1Host: myapiContent-Type: application/json[main] DEBUG feign.Logger - [UserService#getUser] 

上一篇:英文冒险电影怎么读?

下一篇:【Java】文件类 和 I/O流详解