什么是 Logback?
Logback 是由 log4j 创始人 Ceki Gülcü 开发的一款高性能、灵活且广泛使用的 Java 日志框架。它作为 SLF4J(Simple Logging Facade for Java)的原生实现,提供了比 log4j 更快的速度和更丰富的功能。
基本配置文件结构
Logback 默认会从 classpath 中加载 logback.xml 或 logback-spring.xml(Spring Boot 环境)。以下是最简配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
核心组件说明
- <configuration>:根元素,包含所有配置。
- <appender>:定义日志输出目的地(如控制台、文件等)。
- <encoder>:指定日志格式(常用
PatternLayoutEncoder)。 - <logger>:为特定包或类设置日志级别和输出目标。
- <root>:根 logger,所有未被显式配置的 logger 都继承其设置。
常用配置示例
1. 输出到文件并按日期滚动
<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>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
2. 为特定包设置 DEBUG 级别
<logger name="com.example.service" level="debug" additivity="false"> <appender-ref ref="FILE" /> </logger>
最佳实践建议
- 使用
%logger{36}缩短类名显示,避免日志过长。 - 生产环境避免使用
DEBUG级别,防止性能损耗和磁盘爆满。 - 结合 Spring Boot 使用
logback-spring.xml可利用 profile 功能。 - 定期清理旧日志,通过
maxHistory和totalSizeCap控制存储。