Spring Boot 2.5升级2.6遇Logback配置问题求助
问题描述
将Spring Boot版本从2.5升级至2.6后,遇到Logback相关配置问题,具体表现为:
- 运行时生成了名为
log_file_is_undefined.log的异常文件 - 控制台输出错误日志,提示配置文件无法加载:
2022-10-07 22:51:09,241 INFO [o.s.c.a.ConfigurationClassParser ] Properties location [classpath:application.properties] not resolvable: class path resource [application.properties] cannot be opened because it does not exist
附带的相关配置如下:
application.properties片段:
logging.file=abc.log logging.path=.
logback-spring.xml部分配置:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH:-.}/${LOG_FILE}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_PATH:-.}/${LOG_FILE}-%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>3</maxIndex> </rollingPolicy> <!-- Only allow a file to get to ~10MB --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>10MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%date{ISO8601} %-5level [%-35.35logger{30}] %msg%n</pattern> </encoder> </appender>
问题原因分析
- 日志配置属性版本变更:Spring Boot 2.6对日志配置属性做了调整,原
logging.file和logging.path已被废弃,替换为logging.file.name和logging.file.path。旧属性无法正确映射到Logback的LOG_FILE和LOG_PATH变量,导致变量未定义,生成异常命名的日志文件。 - 配置文件位置错误:控制台提示
application.properties无法找到,说明文件未放在正确的类路径目录(默认应为src/main/resources/),Spring无法加载配置,进一步导致日志变量初始化失败。
解决步骤
更新日志配置属性
将application.properties中的旧日志配置替换为Spring Boot 2.6推荐的属性:# 替换原logging.file和logging.path logging.file.name=abc.log logging.file.path=.若只需指定当前目录下的日志文件,也可简化为:
logging.file.name=./abc.log修正配置文件位置
确认application.properties文件放置在项目的src/main/resources/目录下(Maven/Gradle项目的默认类路径资源目录);多模块项目需确保该文件所在模块被正确依赖加载。验证Logback变量映射
Spring Boot默认会自动将logging.file.name和logging.file.path映射为Logback可用的LOG_FILE和LOG_PATH变量,修正属性后即可正常使用。若需自定义变量绑定,可在logback-spring.xml中显式配置:<springProperty name="LOG_FILE" source="logging.file.name"/> <springProperty name="LOG_PATH" source="logging.file.path"/>
内容的提问来源于stack exchange,提问作者Khushboo
相关产品推荐
相关产品推荐

