logback是slf4j的原生实现,性能优异、配置灵活,核心配置文件为logback.xml(或logback-spring.xml),由appender(定义输出目的地)、logger(指定包/类日志级别与appender)和root(全局默认logger)三部分构成。

Logback 是 Slf4j 的原生实现,性能好、配置灵活,是 Java 项目中主流的日志框架。配置核心在于 logback.xml(或 logback-spring.xml)文件,控制日志级别、输出位置、格式和归档策略。
基础配置结构:appender + logger + root
一个典型配置包含三部分:
- appender:定义日志输出目的地(控制台、文件、远程等),可指定格式和过滤规则;
- logger:为特定包或类设置日志级别和关联的 appender(可不继承 root);
- root:全局默认 logger,必须配置,决定未显式声明的类的日志行为。
常用 appender 示例:控制台与文件输出
以下是最常见的两种 appender 配置片段:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><rollingpolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><filenamepattern>logs/app.%d{yyyy-MM-dd}.%i.log</filenamepattern><timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxfilesize>10MB</maxfilesize></timebasedfilenamingandtriggeringpolicy><maxhistory>30</maxhistory></rollingpolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender>
注意:SizeAndTimeBasedFNATP 支持“按天+按大小”双维度归档,%i 表示同一天内超限后的序号(如 app.2024-06-01.0.log)。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
控制日志级别与路由:logger 和 root 协同使用
通过 logger 可精细化管理不同模块的日志量:
<!-- 关闭 Hibernate SQL 参数日志(减少干扰)--> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="WARN"></logger><p><!-- 让自定义 service 包输出 DEBUG 级别 --> <logger name="com.example.myapp.service" level="DEBUG" additivity="false"><appender-ref ref="FILE"></appender-ref></logger></p><p><!-- 根 logger:默认输出 INFO 及以上到 CONSOLE 和 FILE --> <root level="INFO"><appender-ref ref="CONSOLE"></appender-ref><appender-ref ref="FILE"></appender-ref></root></p>
additivity="false" 表示该 logger 不再向 root 传递日志,避免重复输出。
Spring Boot 中的增强用法:logback-spring.xml
在 Spring Boot 项目中,建议使用 logback-spring.xml,它支持 Spring Profile 条件化配置:
<springprofile name="dev"><root level="DEBUG"><appender-ref ref="CONSOLE"></appender-ref></root></springprofile><p><springprofile name="prod"><root level="WARN"><appender-ref ref="FILE"></appender-ref></root></springprofile></p>
这样无需改代码,仅靠 --spring.profiles.active=prod 就能切换日志行为。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










