您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页springbootlogback如何从apollo配置中心读取变量

springbootlogback如何从apollo配置中心读取变量

来源:叨叨游戏网
springbootlogback如何从apollo配置中⼼读取变量

⽬录

springbootlogback从apollo配置中⼼读取变量1、在apollo配置中⼼添加2、项⽬的application.yml配置⽂件配置如下3、在logback.xml配置springProperty标签SpringBootLogback⽆法获取配置中⼼属性如何解决解决⽅案

springboot logback 从apollo配置中⼼读取变量

1、在apollo配置中⼼添加

logback-config.properties配置⽂件

2、项⽬的application.yml配置⽂件配置如下

主要是eagerLoad.enabled: true这个配置

app:

id: SX-sale-app-soaapollo:

bootstrap: enabled: true

#将Apollo配置加载提到初始化⽇志系统之前 eagerLoad: enabled: true

namespaces: application.yml,logback-config

3、在logback.xml配置springProperty标签

设置好标签名称和配置中⼼变量名称的,使⽤的时候${name}引⼊该变量

${logstash.host} ${logstash.port}

{\"appname\":\"server-user\

这个是后启动⽇志中会报如下错误:

20:26:50,683 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@120:31 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]20:26:50,683 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@121:58 - no applicable action for [logger], current ElementPath is [[configuration][springProfile][logger]]

20:26:50,683 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@132:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][springProfile][logger][appender-ref]]

这是因为⽇志⽂件的名称是logback.xml的话,logback会在SpringCloud和apollo配置加载之前加载⽇志配置,这时⽇志⽂件中的springProfile的配置是⽆效的。所以根据官⽅⽂档说明,需要将logback.xml改为logback-spring.xml,然后报错就没有了。

注:虽然logback.xml⽂件名启动时会报错,但是不影响实际效果,猜测是因为上边第⼆步中的配置会在后边再次加载logback⽇志,所以logback依然会产⽣效果,但是对于有代码洁癖的⼈来说,没有任何报错和异常才是最舒服的。

SpringBoot Logback⽆法获取配置中⼼属性

最近在做项⽬中,需要把项⽬中的⽇志信息通过RabbitMQ将规定格式的消息发送到消息队列中,然后ELK系统通过消息队列拿⽇志并且保存起来,在⽇志的配置⽂件(logback-spring.xml)中我们需要加⼊RabbitMQ的配置信息,我们的RabbitMQ信息存在Nacos的配置中⼼,就出现项⽬启动⽆法获取到RabbitMQ的配置,导致出错

如何解决

问题原因

中对LogBack的描述中我们可以知道,项⽬启动时,logback.xml或者logback-spring.xml加载早于applicaton.yml,所以我们在logback.xml中配置的RabbitMQ属性⽆法获取到

source指定的是application.yml配置⽂件的key

解决⽅案

将logback.xml或者logback-spring.xml⽂件⾃定义名称,并在配置中⼼中指定该⽂件,这样SpringBoot就不会在获取配置中⼼配置之前加载⽇志配置了配置中⼼的配置

#RabbitMQ配置spring:

rabbitmq:

host: 127.0.0.1 virtual-host: test username: admin password: 123logging:

config: classpath:logback-test.xml

⽇志配置

logback-test.xml

value=\"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%method,%line] - %msg%n\" />:ss} %-5level ${springAppName:-} %thread %logger %msg%n\"/>

${log.pattern} UTF-8

${log.path}/${app_name}.log

${log.path}/${app_name}.%d{yyyy-MM-dd}.%i.log 10

10MB

true

${log.pattern} UTF-8

INFO

ACCEPT

DENY

{

\"appName\":\"${app_name}\

\"appInstance\":\"${app_instance_id}\

\"date\":\"%d{yyyy-MM-dd HH:mm:ss.SSS}\ \"thread\":\"[%thread]\ \"level\":\"%-5level\

\"logger\":\"%logger{36}\ \"msg\":\"%msg\" }

${rabbitmq_host} 5672

${rabbitmq_username} ${rabbitmq_password} ${rabbitmq_vhost} false direct

logs.direct logback true false UTF-8

NON_PERSISTENT info

ACCEPT DENY

以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务