天天看點

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相關配置即可。