我们在开发SpringBoot 项目的时候,通过默认的 logback 输出日志,当我们需要配置日志相关参数时,通常是修改 logback.xml 或者 logback-spring.xml 文件。
在设置日志输出目录时,我们希望能够通过环境变量来获取,同时需要支持,如果没有设置对应的环境变量的时候能够给予默认值,那怎么做呢?
通常日志路径配置如下
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_DIR}/log_debug.log</file>
....
</appender>
其中 LOG_DIR 就是一个变量的名称,根据 logback 官方的说明,它读取变量的优先级(寻找路径)是:
- local scope
- context scope
- system properties scope
- OS environment
参考地址: http://logback.qos.ch/manual/configuration.html#variableSubstitution
并且我们需要设置默认值,当没有指定名称变量存在的时候,我们就是用默认值
注意:logback使用的默认值方式和 spring 不一样,默认值的写法对比
- Spring : ${LOG_DIR:/var/log/xxx}
- Logback : ${LOG_DIR:-/var/log/xxx}
看出区别了吗?logback 的默认值需要在 : 后面增加 –
于是我们之前的配置改成如下,默认值才会起效
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${LOG_DIR:-/var/log/xxx}/log_debug.log</file>
....
</appender>