前言
根据Spring Boot 默认 logback.xml 配置文件的寻找和提取博客找到了默认配置,记录如下。
本文SpringBoot 版本为2.1.18.RELEASE。只讲几个重要的配置属性。其余配置属性不解读,请参考logback官方文档。
源码位置
SpringBoot 默认使用的logback配置文件目录为:org\springframework\boot\spring-boot\2.1.18.RELEASE\spring-boot-2.1.18.RELEASE.jar!\org\springframework\boot\logging\logback
可以看到有多个xml文件,base.xml,console-appender.xml,defaults.xml以及file-appedner.xml。
base.xml
LOG_FILE就是日志文件位置。
"LOG_FILE"的属性,该属性的值是通过一系列的变量解析得到的。
首先,它尝试解析名为"LOG_FILE"的环境变量。如果环境变量不存在或为空,则继续解析名为"LOG_PATH"的环境变量。如果"LOG_PATH"环境变量也不存在或为空,则继续解析名为"LOG_TEMP"的环境变量。如果"LOG_TEMP"环境变量也不存在或为空,则继续解析名为"java.io.tmpdir"的系统属性。如果"java.io.tmpdir"系统属性也不存在或为空,则使用默认值"/tmp"。
最终,通过上述的变量解析,得到的值将作为"logback-spring.xml"配置文件中的"log.file"属性的值,用于指定日志文件的路径和名称。如果未提供任何环境变量或系统属性,则日志文件将被保存在"/tmp/spring.log"路径下。
console-appeder.xml
控制台打印,直接引用了CONSOLE_LOG_PATTERN(在default.xml文件中)属性。
default.xml
FILE_LOG_PATTERN、CONSOLE_LOG_PATTERN:前者输出到日志的配置,后者控制台打印配置。
file-appender.xml
输出到日志的配置,重点关注下。
如图所示,SizeAndTimeBasedRollingPolicy采用的是基于日志大小和时间的滚动策略,LOG_FILE就是base.xml中的属性。
${LOG_FILE_MAX_SIZE:-10MB}最大的文件大小,引用变量LOG_FILE_MAX_SIZE,冒号后面的 10MB 表示的是默认值。
最大保存天数引用变量LOG_FILE_MAX_HISTORY,无则默认值为0。