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
相关产品推荐
相关产品推荐

