我使用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。如果需要,我可以粘贴特定的代码片段。
答案 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