在spring-boot中为logback属性指定默认值

Eri*_*ang 6 spring logback spring-boot

spring-boot应用程序中,我尝试为配置默认目录logback

通常,logback.xml我将以这种方式进行配置:

<property name="logFile.dir" value="${catalina.home:-/tmp}/logs" />
Run Code Online (Sandbox Code Playgroud)

分隔符为:-

但是,在application.properties

我必须这样配置:

logging.file=${catalina.home:/tmp}/logs/sportslight.log
Run Code Online (Sandbox Code Playgroud)

需要将分隔符从更改:-:

问题是:

  • logback.xml,这是正确的分隔符,:-:
  • 在中application.properties,为什么只能:起作用,是因为spring-boot在将值传递给logback之前会首先处理它吗?

gly*_*ing 8

在logback.xml中,正确的分隔符为:-。在logback文档中有更多详细信息。

在Spring中,正确的分隔符是:因为Spring支持${my.property:defaultValue}语法。

因此,当面对用于变量替换的默认值分隔符的选择时,选择了logback作者,而选择:-了Spring作者:


wiz*_*awu 5

在 logback.xml 或 logback-spring.xml 中,您可以为系统属性项目属性(或者您可以说 spring 属性)设置默认值。

1)对于系统属性,您可以简单地使用:-语法。在以下示例中,默认级别ThresholdFilterERROR

<configuration>

  <appender name="sentry" class="io.sentry.logback.SentryAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>${sentryLevel:-ERROR}</level>
    </filter>
  </appender>

</configuration>
Run Code Online (Sandbox Code Playgroud)

您可以通过启动 java 进程来覆盖它,例如-DsentryLevel=INFO.

2)对于项目属性/spring属性,可以defaultValuespringProperty元素中设置。

<configuration>

  <springProperty scope="context" name="sentryLevel" source="your.prop.path" defaultValue="ERROR"/>

  <appender name="sentry" class="io.sentry.logback.SentryAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>${sentryLevel}</level>
    </filter>
  </appender>

</configuration>
Run Code Online (Sandbox Code Playgroud)

您可以通过更改 application.properties 或 application.yml 来覆盖它。

your.prop.path=INFO
Run Code Online (Sandbox Code Playgroud)