一、背景
最近一個springboot單體架構的項目改造為springcloud微服務項目的過程中,為了使用nacos的配置中心,同時又想本地開發環境不依賴于nacos,就把application.yml改造成了bootstrap.yml,同時多環境配置application-dev.yml也改為了bootstrap-dev.yml。
初始環境配置檔案結構如下:

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