我有自己的logback base.xml文件,其中我定义了不同应用程序使用的预定义文件追加程序。 我希望每个应用程序可以配置日志目录,并在application.properties(log.path)中使用属性,并且在没有提供的情况下有一个默认值(/ var / log),所以我有:
base.xml
<included>
<property name="logPath" value="${logPath:-/var/log}"/>
<appender name="TEST" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/test.log</file>
...
</appender>
spring boot应用程序的logback-spring.xml:
<configuration>
<springProperty scope="context" name="logPath" source="log.path" />
<include resource="base.xml" />
<root level="INFO">
<appender-ref ref="TEST"/>
</root>
</springProfile>
出于某种原因,我最终得到了两个日志目录,包括/ var / log和“log.dir”,似乎在Spring引导环境准备好之前解释了base.xml。
我正在运行spring-boot 1.5.2带有logback 1.1.11。
答案 0 :(得分:0)
请参阅Spring Documentation,特别是关于如何将属性转移到logback的部分。尝试将logging.path用作application.properties中的属性。它应该在logback中以LOG_PATH的形式访问,而不是。
使用基本文件的常用方法是在Maven / Gradle中添加spring-boot-starter-logging并将其包括在内:
<include resource="org/springframework/boot/logging/logback/base.xml"/>
答案 1 :(得分:0)
我有类似的问题。我使用defaultValue。说实话,这只是一个臭臭的解决方法。
<springProperty name="configurable.canonical.name" source="canonical.name" defaultValue="${canonical_name}" />
<file>logs/${configurable.canonical.name}.log</file>
canonical_name在default.properties中定义。 Maven将在构建期间解决它。
答案 2 :(得分:0)
似乎问题是由添加spring-cloud引起的。
在spring cloud的boostraping过程中,找不到log.dir属性,并且logback会创建一个logDir_IS_UNDEFINED目录。在引导过程之后,使用正确的配置重新初始化logback。
相关的spring-cloud问题:issue-197