2017-06-21 102 views
0

我們關於logback.xml•項目結構如下:空默認字符串物業

src\main\resources\logback.xml 
src\main\resources\config\dev\logback.xml 
src\main\resources\config\sjngm\dev\logback.xml 
src\main\resources\config\int\logback.xml 
src\main\resources\config\local\logback.xml 
src\main\resources\config\prod\logback.xml 

其中第一個引用到特定的環境之一:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration scan="true" scanPeriod="30 seconds"> 
    <contextName>sjngm</contextName> 
    <jmxConfigurator /> 
    <include resource="config/${extra}${env:-local}/logback.xml" /> 
</configuration> 

注意extra沒有定義大部分的時間,這就是爲什麼使用了一會兒:

<include resource="config/${extra:-}${env:-local}/logback.xml" /> 

此時停止工作,記不清哪個版本的logback。所以我們將其改爲

<include resource="config/${extra:-./}${env:-local}/logback.xml" /> 

這也工作了一段時間。

現在我們切換到Spring Boot 1.5.4(包含logback-classic 1.1.11和logback-core 1.1.11)並且它再次停止工作。最新的錯誤消息是:

11:08:15,020 |-WARN in ch.qos.logback.core.joran.action.IncludeAction - Could not find resource corresponding to [config/./local/logback.xml] 

如果我回去

<include resource="config/${extra:-}${env:-local}/logback.xml" /> 

消息是

11:19:28,778 |-WARN in ch.qos.logback.core.joran.action.IncludeAction - Could not find resource corresponding to [config/extra_IS_UNDEFINEDlocal/logback.xml] 

注意的logback仍然使用 「本地」 作爲默認字符串env,所以不是全部都壞了。

現在我該怎麼辦?基本上我想告訴logback我想要一個空字符串,其中extra會是。

回答

0

這也不起作用:

<property name="defaultExtra" value="" /> 
<include resource="config/${extra:-${defaultExtra}}${env:-local}/logback.xml" /> 

爲空字符串似乎總是導致一個未定義的屬性。

唯一的工作的事情我能想出是這樣的:到pom.xml

<if condition='isDefined("extra")'> 
    <then> 
    <include resource="config/${extra}${env:-local}/logback.xml" /> 
    </then> 
    <else> 
    <include resource="config/${env:-local}/logback.xml" /> 
    </else> 
</if> 

加上這樣的:

<dependency> 
    <groupId>org.codehaus.janino</groupId> 
    <artifactId>janino</artifactId> 
</dependency> 

不漂亮?那麼爲什麼他們必須打破好的工作?