logback.xml 是 Logback 框架默认 XML 配置文件,必须置于 src/main/resources/ 下,按 logback-test.xml → logback.xml → logback.groovy 顺序加载,文件名大小写敏感,配置错误将静默降级为控制台输出。
logback.xml 是 Logback 框架的默认 XML 格式配置文件,用于定义日志输出格式、级别、目的地(如控制台、文件)、滚动策略等。它不依赖外部注解或代码,启动时由 LoggerContext 自动加载,是 Java 应用(尤其 Spring Boot 项目)中最常用、最灵活的日志配置方式。
Logback 启动时按固定顺序查找配置文件:logback-test.xml → logback.xml → logback.groovy。生产环境通常用 logback.xml,且必须放在 src/main/resources/ 下(Maven/Gradle 默认类路径根目录)。如果放错位置(比如 src/main/java/ 或子目录),Logback 会回退到默认控制台输出,且控制台会打印警告:
WARN in ch.qos.logback.classic.LoggerContext[default] - No appenders present in context
logback.xml(大小写敏感,不能叫 Logback.xml 或 logback-config.xml)application.properties 中的 logging.config=...,优先以该配置为准scan="true")以下是最简但可运行的配置:定义一个控制台输出器(ConsoleAppender),绑定到 root logger,并设置日志级别为 INFO:
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
定义日志“去哪”,class 属性必须是完整类名,如 ch.qos.logback.core.ConsoleAppender 或 ch.qos.logback.core.rolling.RollingFileAppender
决定“长啥样”, 里的占位符如 %d、%level、%msg 是固定语法,不可拼错 是所有 logger 的默认父节点;单独的 可覆盖特定包日志级别用 RollingFileAppender 替代 ConsoleAppender,配合 TimeBasedRollingPolicy 实现按天归档(如 app.log + app.log.2025-04-01):
logs/app.log logs/app.log.%d{yyyy-MM-dd} 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
指定当前活跃日志文件路径,目录(如 logs/)需存在或由应用有写权限创建 中的 %d{...} 格式必须与 TimeBasedRollingPolicy 兼容,否则滚动失败且无报错提示
控制保留多少天的历史文件,单位是“天”,不是文件个数 中添加两个 ,分别引用 CONSOLE 和 FILE
实际项目中,直接写死路径或级别很快会不够用。Logback 提供了 、(Spring Boot)、AsyncAppender 等机制,但配置稍有偏差就静默失效:
后,必须用 ${LOG_PATH} 引用,不能写成 $LOG_PATH 或 #{LOG_PATH}
,这样可从 a
pplication.yml 统一管理路径AsyncAppender 提升性能时,必须把真正干活的 appender(如 FILE)嵌套在 内部,再引用它 —— 不是把 AsyncAppender 当作顶层 appender 直接用dev/prod),得靠 Spring Boot 的 标签包裹配置块,且该标签仅在 Spring Boot 环境下有效XML 格式看着简单,但缩进错误、标签未闭合、类名拼错、占位符大小写不对,都会导致 Logback 降级为默认配置——而它几乎不报错,只在启动日志里悄悄提示 “Ignoring configuration file”。真出问题时,先检查控制台有没有这类 WARN,再确认 XML 是否能被正确解析。