2017-05-17 49 views
1

我有我自己的logback base.xml文件,其中我定義了由不同應用程序使用的預定義文件appender。 我希望日誌目錄可以在application.properties(log.path)中的每個應用程序中配置,並且在沒有提供(/ var/log)的情況下具有默認值,所以我有:在spring引導應用程序配置屬性之前加載的logback-spring.xml

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> 

的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」,似乎base.xml在spring引導環境準備好之前就被解釋了。

我在運行spring-boot 1.5.2自帶了logback 1.1.11。

回答

0

看來問題是由於添加了spring-cloud引起的。

在spring cloud的boostraping過程中,找不到log.dir屬性,logback創建一個logDir_IS_UNDEFINED目錄。引導進程後,使用正確的配置重新初始化logback。

相關spring-cloud問題:問題197

0

請參閱Spring Documentation,特別是有關屬性如何轉移到logback的部分。嘗試使用logging.path作爲application.properties中的一個屬性。它應該可以作爲logback中的LOG_PATH進行訪問。

另外使用基本文件中的通常的方法是通過將在Maven中/搖籃彈簧引導起動記錄和包括它這樣:

<include resource="org/springframework/boot/logging/logback/base.xml"/> 
+0

logback base文件對我沒有用處。我有幾個不同的日誌文件定製的appender,我需要配置日誌路徑,因爲它們被幾個不同的應用程序使用。 – redhunter

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將在構建過程中解決它。

+0

這不是一個答案。 –

相關問題