天天看点

bootstrap.yml不支持logback.xml或者logback-spring.xml配置一、背景二、logback.xml不生效问题三、问题分析定位四、结论

一、背景

最近一个springboot单体架构的项目改造为springcloud微服务项目的过程中,为了使用nacos的配置中心,同时又想本地开发环境不依赖于nacos,就把application.yml改造成了bootstrap.yml,同时多环境配置application-dev.yml也改为了bootstrap-dev.yml。

初始环境配置文件结构如下:

bootstrap.yml不支持logback.xml或者logback-spring.xml配置一、背景二、logback.xml不生效问题三、问题分析定位四、结论

二、logback.xml不生效问题

微服务改造完成后,本地开发环境logback.xml不生效,最明显的特征是配置的SQL打印没有了,而服务器上的众多环境使用的是nacos配置中心里的配置,logback的配置正常,SQL打印也正常。

三、问题分析定位

3.1 猜测是logback.xml的问题

本地环境bootstrap-dev.yml里配置的logback.xml不生效,想着可能是springcloud对logback-spring.xml的支持更好,就把logback.xml更名为logback-spring.xml,可是问题并没有解决,因此,排除logback.xml的嫌疑。

3.2 猜测是bootstrap.yml的问题

bootstrap.yml是系统级的配置,application.yml是应用级的配置,bootstrap.yml被加载时间更早。因此,springcloud使用bootstrap.yml来加载nacos相关配置,而后再通过bootstrap.yml中的nacos配置来读取配置中心的application.yml配置。正常logback.xml是配置在application.yml中的。猜测是logback.xml不支持使用bootstrap.yml来加载。因此,本地开发环境重新把application.yml的配置文件加回来,同时在bootstrap.yml中关闭nacos。经测试,本地SQL可以正常打印了。

改造后配置文件结构如下:

bootstrap.yml不支持logback.xml或者logback-spring.xml配置一、背景二、logback.xml不生效问题三、问题分析定位四、结论

bootstrap.yml相关配置:

spring:
  application:
    name: cbam-monitor-task
  cloud:
    nacos:
      discovery:
        enabled: false
        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
      # namespace: ${NACOS_NAME_SPACE:2b6e230c-de4e-4005-af5f-1ee07dc45a74}
      config:
        enabled: false
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        namespace: ${NACOS_NAME_SPACE:2b6e230c-de4e-4005-af5f-1ee07dc45a74}
        group: ${NACOS_GROUP:TG}
        file-extension: yml
           

application.yml中logback相关配置

logging:
  config: classpath:log/logback.xml
           

四、结论

bootstrap.yml不支持logback.xml或者logback-spring.xml配置,logback.xml或者logback-spring.xml配置应配置在application.yml,bootstrap.yml作为引导程序配置只配置nacos相关配置即可。