在spring config中通过spring config + environment变量设置logback属性

时间:2018-01-30 12:46:56

标签: spring spring-boot logback

我想以这样的方式配置logback:只有当系统变量LOGGER_ENABLED设置为true时,某些特定的appender才会起作用。如果根本没有设置变量,则不应该给出任何错误。 所以我尝试了几种方法 1.仅设置env变量并将其用作logback中的

<if condition='${LOGGER_ENABLED}'>
    <then>
        <appender-ref ref="MyAppender"/>
    </then>
</if>

如果变量设置为true,则它可以正常工作。如果它不存在 - 它会抛出错误,如...未定义 2.另一个问题是使用spring yml文件并将其设置为

sendErrors=${LOGGER_ENABLED:false} //that means to use false if not set

并在logback中使用

<if condition='${sendErrors}'>
    <then>
        <appender-ref ref="MyAppender"/>
    </then>
</if>

以这种方式它只能用于静态“false”或“true”值,并且不会预取$ {LOGGER_ENABLED:false}条件。

是否可以使用spring boot和logback执行此类配置?

2 个答案:

答案 0 :(得分:1)

您应该可以在logback.xml中对此进行配置。类似的东西:

<logger name="com.myorg.foo" level="${logging.level.com.myorg.foo}" additivity="false">
    <!-- <appender-ref ref="console" /> -->
    <appender-ref ref="MyAppender" />
</logger>   

其中logging.level.com.myorg.foo是您在logback.xml中定义的属性,例如您的变量LOGGER_ENABLED

  <property name="logging.level.com.myorg.foo" value="ERROR"/>

答案 1 :(得分:0)

好的,我在问题上找到了答案。 在logback文件中,默认分隔符为&#34;: - &#34;而不是&#34;:&#34;一般春季启动文件。 将分隔符替换为&#34;: - &#34;我能够在logback文件中准确指定默认值