spring boot 默认集成 slf4j+logback,开发可用 application.properties 快速配置日志级别、包级调试、文件输出及控制台格式;生产推荐 logback-spring.xml 实现 profile 感知、滚动归档、多 appender 分离(如审计日志)、mdc 透传 traceid;轻量操作日志可借 @bizlog 注解自动记录。

Spring Boot 项目默认就集成了日志功能,底层用的是 SLF4J 门面 + Logback 实现,不需要额外加依赖就能直接用。关键在于怎么配置得清晰、可控、适合生产环境。
用 application.properties/yml 快速启用基础日志
适合开发或简单场景,改几个配置项就能看到效果:
-
控制台输出级别:比如只显示 INFO 及以上,
logging.level.root=INFO -
指定包的调试日志:如想看自己模块的详细执行过程,
logging.level.com.example.service=DEBUG -
写入文件:
logging.file.name=logs/app.log或logging.file.path=logs(后者会生成 spring.log) -
自定义格式:支持时间、线程、级别、类名、消息,例如
logging.pattern.console=%d{HH:mm:ss} [%thread] %-5level %logger{20} - %msg%n
用 logback-spring.xml 做生产级精细控制
推荐放在 src/main/resources/ 下,比 logback.xml 更优,因为支持 Spring Profile 和占位符(如 ${spring.profiles.active})。
- 定义路径和格式变量:
<property name="LOG_PATH" value="./logs"></property>,<property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"></property> - 配置控制台 Appender:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"></appender>,里面用<encoder></encoder>套上 pattern - 配置滚动文件 Appender:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"></appender>,配合TimeBasedRollingPolicy按天归档,加maxHistory=30自动清理旧日志 - 设置 root logger 级别,并引用上面两个 appender:
<root level="INFO"><appender-ref ref="CONSOLE"></appender-ref><appender-ref ref="FILE"></appender-ref></root>
按业务场景区分日志输出目标
不是所有日志都要进同一个文件。比如审计操作日志、支付流水日志、异常告警日志,建议单独路由:
- 新建一个
AsyncAppender包裹专用的RollingFileAppender,提升写入性能 - 用
<logger name="com.example.audit" level="INFO" additivity="false"></logger>单独指向审计日志 appender,避免重复输出到 root - 结合 MDC(Mapped Diagnostic Context),在请求入口塞入 traceId、userId:
MDC.put("traceId", UUID.randomUUID().toString());,pattern 中加%X{traceId}即可全局透传
补充:轻量业务日志可考虑注解方案
如果要记录用户操作(如“张三修改了订单状态”),手写 log.info() 容易漏字段、格式不统一。可用 mzt-biz-log 这类框架:
- Maven 引入
bizlog-sdk依赖 - 写个实现类告诉框架怎么取当前操作人(从 Token 或 ThreadLocal 读)
- 在 Controller 或 Service 方法上加
@BizLog注解,自动记录方法名、参数、返回值、耗时、操作人等 - 支持落地到数据库或 ES,方便后续查操作溯源
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











