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

6 篇文章 0 订阅
1 篇文章 0 订阅

1、在apollo配置中心添加logback-config.properties配置文件

2、项目的application.yml配置文件配置如下,主要是eagerLoad.enabled: true这个配置

app:
  id: SX-sale-app-soa
apollo:
  bootstrap:
    enabled: true
    #将Apollo配置加载提到初始化日志系统之前
    eagerLoad:
      enabled: true
    namespaces: application.yml,logback-config

3、在logback.xml配置springProperty标签,设置好标签名称和配置中心变量名称的,使用的时候${name}引入该变量

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds">

	<!-- 读取apollo配置中心设置的变量 -->
	<springProperty scope="context" name="logstash.host" source="logstash.host"></springProperty>
	<springProperty scope="context" name="logstash.port" source="logstash.port"></springProperty>
	<springProperty scope="context" name="log.path" source="log.path"></springProperty>
	
	<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <remoteHost>${logstash.host}</remoteHost>
        <port>${logstash.port}</port>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
            <!-- "appname":"yang_test" 的作用是指定创建索引的名字时用,并且在生成的文档中会多了这个字段  -->
            <customFields>{"appname":"server-user"}</customFields>
        </encoder>
    </appender>

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

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依然会产生效果,但是对于有代码洁癖的人来说,没有任何报错和异常才是最舒服的。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值