SpringBoot Logback无法获取配置中心属性
一、问题出现
最近在做项目中,需要把项目中的日志信息通过logstash将规定格式的消息发送到elasticsearch中,在日志的配置文件(logback-spring.xml)中我们需要加入logstash的配置信息,我们的logstash信息存在Nacos的配置中心,就出现项目启动无法获取到logstash的配置,导致出错。
二、解决
2.1、问题原因
在springboot官网 https://docs.spring.io/spring-boot/docs/2.0.4.RELEASE/reference/htmlsingle/
中对LogBack的描述中我们可以知道,项目启动时,logback.xml或者logback-spring.xml加载早于applicaton.yml,所以我们在logback.xml中配置的logstash属性无法获取到。
2.2、解决方案
将logback.xml或者logback-spring.xml文件自定义名称,并在配置中心中指定该文件,这样SpringBoot就不会在获取配置中心配置之前加载日志配置了
logging:
config: classpath:logback-test.xml
在logback-test.xml中取值
<springProperty scope="context" name="LOG_HOST" source="logstashUserLogin.host"/> <springProperty scope="context" name="LOG_PORT" source="logstashUserLogin.port"/>