一、问题背景

最近改造以前的老项目,将disconfig丢弃掉。引入了Apollo进行集体管理所有项目的配置文件。日志配置文件 logback.xml中有一些值需要从配置中心获取

二、解决方法

(1)修改application.xml中的配置

apollo :
  meta : http://127.0.0.1:8080
  bootstrap :
    enabled : true
    namespaces : application
    eagerLoad :
      enabled : true

apollo.bootstrap.eagerLoad.enabled:将Apollo配置加载提到初始化日志系统之前。
apollo.bootstarp.enabled:在应用启动阶段是否向spring容器中注入托管的properties配置文件信息

(2)修改logback.xml文件
springProperty标签能够读取application.xml中的值,所以这里的source里面对应的变量名应该与Apollo中对应的一致,再通过${name}就可以进行引用了

<springProperty scope="context" name="logLevel" source="level"/>
<springProperty scope="context" name="log.pattern" source="log.pattern"/>

    <!-- 输出到控制台,一般生产环境都是后台启动,这个没太大作用 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${logLevel}</level>
        </filter>
        <encoder charset="UTF-8">
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

查过一些资料说不能使用logback.xml只能使用lockback.xml或者其他文件名才能是变量被访问。我自己试验过logback.xml是可以成功的。假设如果修改lockback.xml文件名为lockback-config.xml,因为springboot不能识别。所以application.xml中还需要指定文件名。

logging :
	config : classpath:lockback-config.xml

最后总结下来,网上的解决方法有很多,并不一定每个人说的都是对的。所以需要自己去试验验证哪种方法是对的。
说句题外话,在即将步入三十岁的年纪,做编程已经第五个年头。前面因为懒浪费了很多学习时间。现在想起当时做这一行的初心,是因为热爱吧。现在醒悟还不晚,抓紧时间自律学习,单身是增值的最佳时期。加油~凭着一腔热血,砥砺前行

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐