logback日志路径出现 IS_UNDEFINED 的问题

本文分析了在使用 Logback 作为日志框架时,日志路径中出现 IS_UNDEFINED 的常见原因,通常是由于未正确配置或未定义相关变量(如 ${LOG_PATH})。文章介绍了该问题的排查方式以及解决方案,帮助开发者更好地掌握 Logback 的配置机制。
single

问题

新建的 SpringBoot 项目使用默认的 logback 作为日志框架。使用 logback.xml 作为配置文件时发现,会出现生成 spring.application.name_IS_UNDEFINED.log 的文件。

原因

问题原因:原因是日志配置里配置了读取 application.yml 的参数作为日志文件名称,

<springProperty scope="context" name="springApplicationName" source="spring.application.name" defaultValue="undefined"/>
<property name="log.path" value="${LOG_PATH:-./logs}/${SPRING_PROFILES_ACTIVE:-local}/${springApplicationName}"/>

而 SpringBoot 加载顺序是 logback.xml > application.yml > logbak-spring.xml

导致加载 logback.xml 时还未加载 application.yml,所以出现参数 IS_UNDEFINED 这个问题。

方案

修改配置文件为 logback-spring.xml 为配置文件或者在 application.yml 的文件中添加 logging:config: 参数指定配置文件。