spring boot 默认使用 logback,推荐通过 logback-spring.xml 实现环境化、分包、格式化等精细配置,也可用 application.yml 快速调整级别和路径;支持 mdc 添加 traceid 等上下文,必要时可切换为 log4j2。

Spring Boot 默认使用 Logback 作为日志框架,支持通过配置文件灵活定制日志输出格式、级别、目标(控制台/文件)、分包策略等。关键在于合理编写 logback-spring.xml(推荐)或 application.yml 配置。
用 logback-spring.xml 实现精细控制
在 src/main/resources/ 下创建 logback-spring.xml,它比 logback.xml 支持 Spring Profile 条件化配置。例如:
- 定义不同环境的日志路径:
内配置滚动文件输出 - 自定义日志格式:用
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>控制时间、线程、级别、类名和消息 - 为特定包设置独立日志级别和输出目标:比如给
com.example.service单独配一个异步 Appender 输出到 service.log
在 application.yml 中快速调整常用项
适合轻量定制,无需 XML。常见配置包括:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
logging.level.com.example=DEBUG:设置包级别日志级别 -
logging.file.name=logs/app.log:指定日志文件路径(Spring Boot 2.7+ 推荐用name而非path) -
logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n:覆盖控制台输出格式 -
logging.pattern.file:单独定义文件输出格式
添加自定义日志上下文(如 traceId、用户ID)
借助 MDC(Mapped Diagnostic Context)实现链路追踪或业务维度标记:
- 在过滤器或拦截器中调用
MDC.put("traceId", UUID.randomUUID().toString()) - 在 logback pattern 中加入
%X{traceId:-},其中:-表示缺省为空字符串 - 务必在请求结束时调用
MDC.clear(),避免线程复用导致日志污染
切换为 Log4j2(按需选择)
若团队统一用 Log4j2,需排除默认 Logback 并引入 Log4j2:
- Maven 中排除
spring-boot-starter-logging,添加spring-boot-starter-log4j2 - 配置文件命名为
log4j2-spring.xml,支持<springprofile></springprofile>标签 - Log4j2 的异步日志性能更优,但配置语法与 Logback 不同,注意 Appender 和 Layout 的写法差异
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










