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

SpringBoot3中Logback警告No appenders present问题解决咨询

解决Logback启动时"No appenders present"警告

你在SpringBoot3里遇到的这个警告,是因为Spring加载环境属性的早期阶段,org.springframework.core.env.PropertySourcesPropertyResolver这个日志记录器要输出日志,但此时Logback的上下文还没完全初始化好,没绑定上可用的appender。虽然日志输出正常,但这个警告看着闹心,给你几个可行的解决办法:

办法1:直接屏蔽目标日志器的输出

在你的logback-spring.xml里给这个特定的日志器设置级别为OFF,彻底关掉它的所有输出,包括警告:

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    
    <!-- 新增这行,直接禁用目标日志器的输出 -->
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="OFF"/>
    
    <springProperty scope="context" name="FILE_PATH_INFO" source="log.path.info" defaultValue="logs/app1-info"/>
    <appender name="info-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${FILE_PATH_INFO}.log</File>
        <!-- 你的其他日志属性配置 -->
    </appender>
    <!-- 其他配置内容 -->
</configuration>

办法2:给初始化阶段加临时输出载体

在Logback配置里先定义一个简单的控制台输出appender,绑定到目标日志器,确保初始化阶段有地方输出日志,等后续Spring加载完成后,不影响你原来的文件输出配置:

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    
    <!-- 定义一个临时控制台appender,用于初始化阶段的日志输出 -->
    <appender name="TEMP_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 给目标日志器绑定临时appender,只输出WARN及以上级别,且不向上传递 -->
    <logger name="org.springframework.core.env.PropertySourcesPropertyResolver" level="WARN" additivity="false">
        <appender-ref ref="TEMP_CONSOLE"/>
    </logger>
    
    <springProperty scope="context" name="FILE_PATH_INFO" source="log.path.info" defaultValue="logs/app1-info"/>
    <appender name="info-file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${FILE_PATH_INFO}.log</File>
        <!-- 你的其他日志属性配置 -->
    </appender>
    <!-- 根日志器配置,绑定你原来的文件appender -->
    <root level="INFO">
        <appender-ref ref="info-file"/>
    </root>
</configuration>

办法3:确保日志配置优先加载

在application.yml里显式指定日志配置文件的加载路径,让SpringBoot优先初始化Logback的基础配置,再加载环境属性:

spring:
  logging:
    config: classpath:logback-spring.xml

这个办法作用可能没前两个直接,但能确保日志配置文件被提前加载,减少加载顺序导致的问题。

内容的提问来源于stack exchange,提问作者user10200598

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:55:02