簡體   English   中英

通過 spring config + spring config 中的環境變量設置 logback 屬性

[英]Setting logback property via spring config + environment variable in spring config

我想以這樣的方式配置 logback,只有當系統變量 LOGGER_ENABLED 設置為 true 時,某些特定的 appender 才會工作。 如果根本未設置變量,則不應出現任何錯誤。 所以我嘗試了幾種方法 1. 只設置 env 變量並在 logback 中使用它作為

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

如果變量設置為 true 或 false,它工作正常。 如果它不存在 - 它會拋出錯誤...未定義 2. 另一個問題是使用 spring yml 文件並將其設置為

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

並在 logback 中使用 like

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

以這種方式,它將僅適用於 static “假”或“真”值,並且不會預取 ${LOGGER_ENABLED:false} 條件。

是否可以使用 spring 啟動和登錄執行此類配置?

好的,我找到了我的問題的答案。 在 logback 文件中,默認分隔符是“:-”而不是一般 spring 引導文件中的“:”。 將分隔符替換為“:-”后,我可以在 logback 文件示例中准確指定默認值

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

您應該能夠在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"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM