未从bootstrap.properties或外部配置服务(spring-cloud-config)中选择日志文件位置

时间:2016-01-01 12:37:56

标签: java spring configuration spring-boot

我使用spring-cloud-config来外化我的服务配置属性。我外化的其中一个属性是日志文件的位置(使用log4j.xml) e.g。

<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${broker.log.location}/${broker.name.log}.log"/>

我的理解是在bootstrap阶段使用了boostrap.properties文件,并且应该解决在那里定义的属性。但是我发现这些属性没有得到解决。配置服务提供此功能的情况也是如此。它解析的唯一方法当我将位置作为jvm参数传递时 例如

-Dbroker.name.log=broker1 -Dbroker.log.location=/tmp/rvm_logs/broker

这也意味着无法从外部配置服务获取这些属性?我做错了什么。为什么不从boostrap.properties或外部配置服务加载这些属性。我正在使用spring-cloud Brixton.M4 releasetrain。如果需要,我可以粘贴特定的代码片段。

2 个答案:

答案 0 :(得分:2)

从来没有能够从Spring环境属性到log4j.xml进行属性解析。如果使用logback,则存在logback-spring.xml路由(该文件由Spring Boot过滤,并根据文档应用于logback)。这里没有特定于Spring Cloud的内容,所以如果您需要了解更多信息,请在Spring Boot用户指南中查看。

答案 1 :(得分:0)

确定。所以我遇到的问题是在使用spring-cloud-config时如何外化日志文件位置。正如Dave指出的那样,这对log4j无效。然而,它很简单,具有logback。对于具有类似要求的用户,请在资源文件夹中定义logback-spring.xml 例如

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml"/>
  <logger name="org.springframework.web" level="DEBUG"/>
</configuration>

现在可以通过服务外部配置文件中的属性logging.file提供日志文件位置。可以在@ https://github.com/rixonmathew/rvm_config/blob/master/broker-service.properties

中找到示例服务配置文件