什么是 Logback?
Logback 是由 log4j 创始人 Ceki Gülcü 开发的新一代 Java 日志框架,作为 SLF4J 的原生实现,具有高性能、灵活配置和自动重载等优势。
基本配置结构
Logback 通常通过 logback.xml 或 logback-spring.xml(Spring Boot)进行配置,基本结构如下:
<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>
核心组件说明
- Appender:定义日志输出目的地,如控制台、文件、数据库等。
- Logger:用于分类日志,可设置不同级别(TRACE, DEBUG, INFO, WARN, ERROR)。
- Encoder/Pattern:控制日志输出格式。
- Filter:对日志事件进行过滤,例如只记录特定内容。
常用配置示例
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{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
2. 多环境配置(Spring Boot)
<springProfile name="dev">
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</springProfile>
<springProfile name="prod">
<root level="info">
<appender-ref ref="FILE" />
</root>
</springProfile>
最佳实践建议
- 始终使用 SLF4J 门面,避免直接依赖 Logback。
- 生产环境关闭 DEBUG 日志,避免性能损耗。
- 合理设置日志文件滚动策略,防止磁盘爆满。
- 敏感信息(如密码、身份证)禁止记录到日志中。