• Spring Cloud OpenFeign - 日志配置


    项目源码地址:https://download.csdn.net/download/weixin_42950079/87168704



    OpenFeign 有 4 种日志级别:

    • NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)。
    • BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)。
    • HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息。
    • FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)。

    1. 设置OpenFeign日志级别

    需要注意的是:OpenFeign 的日志配置分为 全局配置局部配置

    • 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用。
    • 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用。

    1.1 全局配置
    import feign.Logger;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用
     * 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用
     */
    
    @Configuration
    public class feignConfig {
    
        /**
         * OpenFeign日志级别:
         *      NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)
         *      BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)
         *      HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息
         *      FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)
         */
        @Bean
        public Logger.Level feignLoggerLevel(){
            return Logger.Level.FULL;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    1.2 局部配置(一)

    1)在配置类中,设置 OpenFeign 的日志级别,但记得不要添加@Configuration注解,否则就变成全局配置啦。

    import feign.Logger;
    import org.springframework.context.annotation.Bean;
    
    /**
     * 全局配置:加了@Configuration注解表示全局配置,对所有服务起作用
     * 局部配置:不加@Configuration注解表示局部配置,只针对指定的一个服务起作用
     */
    public class feignConfig {
    
        /**
         * OpenFeign日志级别:
         *      NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)
         *      BASIC: 仅记录请求方法、URL、响应状态码、执行时间(适用于生产环境追踪问题)
         *      HEADERS: 在记录BASIC级别的基础上,记录请求和响应的header头部信息
         *      FULL: 记录请求响应的header、body 和 元数据(适用于开发和测试环境定位问题)
         */
        @Bean
        public Logger.Level feignLoggerLevel(){
            return Logger.Level.FULL;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2)在 OpenFeign 接口中的@FeignClient注解中,添加configuration注解来指定该 OpenFeign 接口使用的配置类,配置类中包含对 OpenFeign 接口的扩展,如日志级别等…

    import com.cd.order8010.config.OpenFeignConfig;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * 添加 Feign 接口和方法:
     * * name:指定调用rest接口所对应的服务名
     * * path:指定调用rest接口所在的StockController指定的RequestMapping的路径,如果StockController上没有RequestMapping,则不指定path属性
     */
    @FeignClient(name = "stock-service", path = "/stock", configuration = OpenFeignConfig.class)
    public interface StockFeignService {
    
    
        // 声明要调用的rest接口对应的方法
        @RequestMapping("/reduce")
        public String reduce();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    cd


    1.2 局部配置(二)
    • 除了上面的方式可以进行 OpenFeign 局部配置之外,还可以直接在 yml 配置文件中进行 OpenFeign 局部配置。
    #springboot默认日志级别是info,openfeign调试级别是debug级别,所以openfeign日志信息不会输出,需要将openfeign接口的调试级别设置成debug级别
    logging:
        level:
            com.cd.order8010.feign: debug
            
    # openfeign日志局部配置
    feign:
        client:
            config:
              stock-service: #对应的微服务实例名称
                  logger-level: FULL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2. 配置OpenFeign日志后,无法输出日志信息

    OpenFeign 的默认日志级别是 NONE 级别,也就是不记录任何日志信息。但为什么按上面步骤将 OpenFeign 的日志级别设置成 FULL 级别后,还是没有打印日志信息呢?

    • 这是因为 OpenFeign 的调试日志是以 debug 级别来输出的。而 Spring Boot 默认的日志级别是 info 级别。info 级别是大于 debug 级别的,所以 debug 级别的日志(OpenFeign日志)不会输出。

    所以,想要输出 OpenFeign 日志信息,需要将 OpenFeign 接口的日志调试级别设置成 debug 级别。这一步在application.yml配置文件中进行。
    cd

    #springboot默认日志级别是info,openfeign调试级别是debug级别,所以openfeign日志信息不会输出,需要将openfeign接口的调试级别设置成debug级别
    logging:
        level:
            com.cd.order8010.feign: debug
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【STM32】---存储器,电源核时钟体系
    并查集(按秩合并,路径压缩)
    shiro组件漏洞分析(二)
    Composite 组合模式简介与 C# 示例【结构型3】【设计模式来了_8】
    关于mybatis用${}会sql注入的问题
    CIIS 2023丨聚焦文档图像处理前沿领域,合合信息AI助力图像处理与内容安全保障
    漫谈计算机网络:应用层 ----- 从DNS域名解析到WWW万维网再到P2P应用
    iOS小技能:设置app语言(跟随系统和特定语言)
    Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库
    在linux系统上看全世界新闻 -- Clinews的使用详解
  • 原文地址:https://blog.csdn.net/weixin_42950079/article/details/128045642