首页 > 解决方案 > Logback:测试是否定义了属性

问题描述

在 Spring Boot / Logback 项目中,我想检查系统属性是否设置为使用给定的附加程序。我的代码是:

<property name="MY_PROPERTY" value="${MY_PROPERTY:-}" />
....
<logger name="com.my.project" level="INFO">
    <if condition='property("MY_PROPERTY").equalsIgnoreCase("MY_PROPERTY_IS_UNDEFINED")'>
        <then>
            <appender-ref ref="STDOUT" />
        </then>
        <else>
            <appender-ref ref="APPENDER_WITH_ MY_PROPERTY" />
        </else>
    </if>
</logger>

上面的代码(似乎)有效,但这并不好。property() 方法将 _IS_UNDEFINED 附加到变量名,我使用它...

我找不到任何可靠的文档,有没有更好的方法?

标签: spring-bootlogginglogbackspring-logback

解决方案


派对迟到了,但是嘿。

logback 手册(http://logback.qos.ch/manual/configuration.html)提到了该isDefined方法:

isDefined() 方法可用于检查属性是否已定义。例如,要检查属性“k”是否已定义,您可以编写 isDefined("k") 类似地,如果您需要检查属性是否为 null,则提供了 isNull() 方法。示例:isNull("k")。


推荐阅读