log4j2无法从正确的配置中读取spring boot属性

时间:2017-04-07 11:39:03

标签: java spring-boot properties log4j2

在log4j2.xml中,我有以下两个属性:

<Properties>
<Property name="log-path">logs</Property>
<Property name="bootstrap.servers" value="${bundle:application:app.kafkaBrokers}"></Property>
<Property name="fileName" value="${bundle:application:app.correctName}"></Property>

以下两个appender:

<Kafka name="Kafka" topic="logaggregation" >
  <JSONLayout complete="false" compact="false" /> <PatternLayout pattern="%date %message" /> 
  <Property name="bootstrap.servers">${bootstrap.servers}</Property>
</Kafka>
<RollingFile name="RollingFile" fileName="${fileName}"
  filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
  <PatternLayout>
    <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
  </PatternLayout>
  <Policies>
    <TimeBasedTriggeringPolicy />
    <SizeBasedTriggeringPolicy size="250 MB" />
  </Policies>
</RollingFile>

kafkaAppender读取属性

  

bootstrap.servers

和Rolling文件读取属性

  

文件名

在我的src / main / resources中,我有以下application.properties文件:

app.kafkaBrokers=localhost:9092

app.correctName = log.txt的

在jar所在的文件夹中,我有另一个application.properties文件,其中包含以下内容:

app.kafkaBrokers =本地主机:9092 app.correctName = correct.log

现在,如果我使用java -jar运行,我的springboot jar log4j2不会从位于jar文件所在目录中的文件中获取该属性,如spring文档中所述here

事实是,如果我在我的主类中编写以下代码:

  @PostConstruct
  public void init() {
    System.out.println(env.getProperty("app.kafkaBrokers") + "  "
        + env.getProperty("app.correctName"));

  }

我看到打印的正确值如“correct.log”但是log4j2仍未获取新值并使用“log.txt”

我怀疑是log4j2在spring实际选择正确的application.properties文件之前启动。 有什么想法吗?

0 个答案:

没有答案