Spring Boot 默认集成了 Logback 作为日志框架,集成过程主要依赖配置文件即可实现灵活控制。以下是详细步骤和关键配置:
一、基础集成
-
依赖管理
Spring Boot 的spring-boot-starter-web
或spring-boot-starter
已包含 Logback 依赖(无需额外添加)。若需排除其他日志框架(如 Log4j),可手动排除冲突包。 -
配置文件
在src/main/resources
下创建logback-spring.xml
(优先级高于默认配置),基础结构示例:<configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </configuration>
通过
application.yml
动态调整日志级别:logging: level: root: INFO com.example: DEBUG
二、进阶配置
-
输出到文件
添加滚动日志策略,避免文件过大(关键!):<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <!-- 单文件上限 --> <maxHistory>30</maxHistory> <!-- 保留30天日志 --> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{50} - %msg%n</pattern> </encoder> </appender>
-
异常日志分离
单独记录错误日志:<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <!-- 滚动策略配置同上 --> </appender>
三、高级功能:日志入库
- 数据库写入
步骤:- 添加依赖(MySQL 示例):
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <!-- 连接池 --> </dependency>
- 在
logback-spring.xml
中配置 DB Appender:<appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <dataSource class="org.apache.commons.dbcp2.BasicDataSource"> <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName> <url>jdbc:mysql://localhost:3306/log_db</url> <username>root</username> <password>root</password> </dataSource> </connectionSource> </appender>
- 关键: 执行 Logback 源码中的 SQL 建表脚本(路径:
logback-classic-1.2.x.jar!/ch/qos/logback/classic/db/script/
),选择与依赖版本一致的脚本(如logback-classic-1.2.11.jar
)。
- 添加依赖(MySQL 示例):
四、最佳实践与避坑指南
- 版本一致性:确保 Logback 版本与 Spring Boot 兼容,避免因版本冲突启动失败(如手动指定版本号)。
- 日志分割:必须设置
maxFileSize
和maxHistory
,否则日志文件可能撑满磁盘。 - 环境区分:通过
logback-spring.xml
支持多环境配置(使用<springProfile>
标签)。 - 性能影响:数据库写入会增加 I/O 压力,建议仅用于关键日志(如 ERROR 级别)。
完整配置示例请参考:
<!-- logback-spring.xml 示例 --> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <appender name="CONSOLE" ... /> <appender name="FILE" ... /> <appender name="DB" ... /> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> <logger name="com.example" level="DEBUG" additivity="false"> <appender-ref ref="DB"/> <!-- 仅特定包日志入库 --> </logger> </configuration>