想通过application.yml中的spring.application.name的配置来设置日志的文件名称
一、问题
在SpringBoot项目,想做链路追踪时,使用logback-spring.xml中配置当前项目名称,读取application.yml中配置的路径,在logback-spring.xml中引用如下:
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p [${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-ParentName:-}]}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t|%X{THREAD_ID}]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
发现application.yml一直读取不到。
二、原因
因为logback-spring.xml的加载要先于application.yml,所以直接通过${参数key}的形式获取是无法获取到application.yml对应参数值的。
具体的执行顺序是:bootstrap.properties > bootstrap.yml > application.properties > application.yml
log文件执行顺序是:logback.xml > logback-spring.xml
三、解决
使用application.properties或者bootstrap.yml配置。