You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>
问题原因分析
  1. 日志配置属性版本变更:Spring Boot 2.6对日志配置属性做了调整,原logging.file和logging.path已被废弃,替换为logging.file.name和logging.file.path。旧属性无法正确映射到Logback的LOG_FILE和LOG_PATH变量,导致变量未定义,生成异常命名的日志文件。
  2. 配置文件位置错误:控制台提示application.properties无法找到,说明文件未放在正确的类路径目录(默认应为src/main/resources/),Spring无法加载配置,进一步导致日志变量初始化失败。
解决步骤
  1. 更新日志配置属性
    将application.properties中的旧日志配置替换为Spring Boot 2.6推荐的属性:

    # 替换原logging.file和logging.path
    logging.file.name=abc.log
    logging.file.path=.
    

    若只需指定当前目录下的日志文件,也可简化为:

    logging.file.name=./abc.log
    
  2. 修正配置文件位置
    确认application.properties文件放置在项目的src/main/resources/目录下(Maven/Gradle项目的默认类路径资源目录);多模块项目需确保该文件所在模块被正确依赖加载。

  3. 验证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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:55:48