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"/>

 

posted @ 2021-12-27 11:15  炫舞风中  阅读(584)  评论(0编辑  收藏  举报