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

Log file location not being picked from bootstrap.properties or external configuration service(spring-cloud-config)

我已经使用 spring-cloud-config 来外部化我的服务配置属性。我外部化的属性之一是日志文件的位置(使用 log4j.xml) 例如

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

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

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

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

从 Spring 环境属性到 log4j.xml 的 属性 解析都无法做到。如果您使用 logback,则存在 logback-spring.xml 路由(根据文档,该文件由 Spring Boot 过滤并应用于 logback)。这里也没有特定于 Spring Cloud 的内容,因此如果您需要了解更多信息,请在 Spring 启动用户指南中查找所有内容。

好的。所以我遇到的问题是如何在使用 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 在您的服务的外部配置文件中提供日志文件位置。示例 service-configuration 文件可以在@ https://github.com/rixonmathew/rvm_config/blob/master/broker-service.properties

中找到