springcloudSpring Boot 2.0面试

SpringBoot logback从配置中心读取属性

2018-08-14  本文已影响80人  AaronSimon

一、前言

这篇文章https://www.jianshu.com/p/9be945a1c318中我详细描述了Spring Boot中如何配置logback日志。在最近的项目中,有这样一个需求:日志信息要使用日志搜集模块进行收集并存入mongodb数据库,所以在日志配置文件中我们必须传入mongodb的配置信息。

二、解决问题

  1. 官网描述


    1
    2

根据官网的描述可以得到这样的信息:logback.xml加载早于application.yml,如果直接通过${参数key}的形式获取是无法获取到对应参数值的。解决的方法是:

<springProperty scope="context" name="mongo.host" source="spring.data.mongodb.host"/>

source指定的是application.yml配置文件中key,其它地方直接用${mongo.host}引用这个值。但是,相关的属性信息必须放在内部配置文件中,无法从配置中心的配置文件中读取。经过网上收集资料,最后认定可能是这个原因:logback.xml和logback-spring.xml名称为这两个的配置文件,SpringBoot默认为logback的配置文件,那么SpringBoot会在从配置中心获取信息之前就进行加载,这样就会读不到配置中心的属性。

  1. 解决方案
    经过fq搜索,在一个论坛里发现了解决方案:自定义logback配置文件的名称(不是SpringBoot默认的两种名称)并在配置中心指定logback配置文件的位置。这样SpringBoot就不会在获取配置中心的配置前加载日志配置了。经过测试,完美解决问题。
上一篇下一篇

猜你喜欢

热点阅读