logback.xml从Apollo配置中心读取值
·
一、问题背景
最近改造以前的老项目,将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
最后总结下来,网上的解决方法有很多,并不一定每个人说的都是对的。所以需要自己去试验验证哪种方法是对的。
说句题外话,在即将步入三十岁的年纪,做编程已经第五个年头。前面因为懒浪费了很多学习时间。现在想起当时做这一行的初心,是因为热爱吧。现在醒悟还不晚,抓紧时间自律学习,单身是增值的最佳时期。加油~凭着一腔热血,砥砺前行
更多推荐
所有评论(0)