从spring-log4j2.xml文件中的应用程序属性读取值

时间:2018-02-06 09:47:02

标签: java xml spring spring-boot log4j2

假设我有log4j2-spring.xml文件,其中包含appender的所有配置。 有一种方法可以从application.properties文件中注入xml值吗?

我的spring-log4j2.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
    <Syslog name="ElkLogs" host="${logstash.host}" port="5002" protocol="UDP"> 
    </Syslogs>
    <Async name="AsyncElkLogs">
    <AppenderRef ref="ElkLogs"
    </Async> 
</Appenders>
<Loggers>
    <Root>
        <AppenderRef ref="AsyncElkLogs"/>
    </Root>
</Loggers>
</Configuration>

我的application-dev.properties文件:

logstash.host=elk-dev-1

我的application-prod.properties文件:

logstash.host=elk-prod-1

2 个答案:

答案 0 :(得分:1)

使用下面的代码

class="org.springframework.beans.factory.config.PropertiesFactoryBean">
 <property name="locations">
<list>
  <value>file:/relase/location1env/env1.properties</value>
  <value>file:/relase/location2env/env2.properties</value>
</list>

答案 1 :(得分:0)

我找到了解决问题的另一个解决方案,即减少环境之间的耦合。

我创建了两个配置文件,每个配置文件对应一个名称为spring-log4j2-dev.xmlspring-log4j2-prod.xml

的环境

并将我的application.properties文件编辑为:

<强> application-dev.properties

logging.config=classpath:spring-log4j2-dev.xml

<强> application.properties

logging.config=classpath:spring-log4j2-prod.xml