Spring Boot集成Logback时${user.home}变量无效无法生成日志文件问题咨询
问题原因与修复方案
场景1:保留logback-spring.xml的情况
你当前的配置存在3个明显错误:
logback-spring.xml中重复定义了LOG_FILE变量:你通过<springProperty>已经定义了上下文范围的LOG_FILE,后续新增的<property name="LOG_FILE" value="${LOG_FILE}"/>是logback原生配置,加载顺序早于spring扩展的<springProperty>,会导致LOG_FILE被提前解析为空值。直接删除这行重复定义即可。defaultprofile对应的logger标签末尾多了一个尖括号,原代码为</logger>>,多余的>会导致xml解析失败,logback直接 fallback 到默认配置,不会按你的规则生成日志文件,修正为</logger>即可。- logger包名配置不一致:通用logger的name是
com.example.demospringweb,但springProfile中的logger name是com.demospringweb,少了example层级,会导致业务包的日志无法匹配到你配置的FILE输出规则,统一包名即可。
场景2:仅使用application.yml配置的情况
最核心的错误是你把logging配置放到了spring节点下,Spring Boot的日志配置是顶级配置项,不属于spring的子节点,框架根本读取不到你写的spring.logging相关配置,自然不会生成日志文件。
如果你使用的是Spring Boot 2.2及以上版本,还需要注意旧的logging.file属性已经废弃,建议替换为logging.file.name保证兼容性。
修正后的yml配置参考:
greeting: Default greeting password: default-pass spring: application: name: demo-spring # logging为根节点,不要放在spring层级下 logging: file: name: demo-dev pattern: file: "%d{dd-MM-yyyy HH:mm:ss.SSS} %logger.%M - %msg%n" console: "%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger.%M - %msg%n" level: root: debug org: hibernate: ERROR springframework: web: DEBUG
通用排查点
- 确认项目依赖中没有排除
spring-boot-starter-logging,也没有引入其他日志框架(如log4j2)与logback产生冲突。 - 确认日志文件的存储路径对应用启动用户有写入权限,相对路径的日志文件会生成在应用的启动工作目录下。
内容的提问来源于stack exchange,提问作者belgoros
相关产品推荐
相关产品推荐

