2017-06-21 75 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> 

不漂亮?那么为什么他们必须打破好的工作?