目录
[1. 日志滚动策略简介](#1. 日志滚动策略简介)
[2. 核心配置参数解析](#2. 核心配置参数解析)
[2.1 必选参数](#2.1 必选参数)
[2.2 可选参数](#2.2 可选参数)
[3. 按日期与大小分割日志](#3. 按日期与大小分割日志)
[3.1 基础配置示例](#3.1 基础配置示例)
[3.2 文件生成规则](#3.2 文件生成规则)
[4. 自动创建分级目录](#4. 自动创建分级目录)
[4.1 按月份归档日志](#4.1 按月份归档日志)
[4.2 多级目录配置](#4.2 多级目录配置)
[5. 常见问题与排查技巧](#5. 常见问题与排查技巧)
[5.1 日志日期错乱](#5.1 日志日期错乱)
[5.2 文件未按大小分割](#5.2 文件未按大小分割)
[6. 最佳实践与避坑指南](#6. 最佳实践与避坑指南)
[6.1 时间同步](#6.1 时间同步)
[6.2 配置验证](#6.2 配置验证)
[6.3 版本管理](#6.3 版本管理)
[6.4 日志监控](#6.4 日志监控)
1. 日志滚动策略简介
Logback 的日志滚动(Rolling)功能允许开发者根据时间或文件大小自动切割、压缩和管理日志文件。通过合理配置,可实现:
时间滚动:按日、月、年生成日志文件。
大小滚动:单个文件超过阈值后分割新文件。
智能归档:自动清理旧日志,避免磁盘爆满。
2. 核心配置参数解析
2.1 必选参数
定义归档日志的命名规则,支持日期格式(%d)和索引编号(%i)。
示例 :app.%d{yyyy-MM-dd}.%i.log.gz
%d{yyyy-MM-dd}:按天分割文件
%i:同一天内文件超过大小后的递增编号
.gz:自动压缩为 Gzip 格式
单个日志文件的最大大小,触发滚动操作。
示例 :10MB、1GB
保留历史日志文件的最大天数。
示例 :30(保留最近 30 天日志)
2.2 可选参数
所有归档日志的总大小上限,超出后删除最旧文件。
示例 :10GB
应用启动时清理过期日志。
示例 :true
3. 按日期与大小分割日志
3.1 基础配置示例
XML
复制代码
3.2 文件生成规则
每日零点 :生成新文件(如 app.2025-03-18.0.log.gz)。
大小触发 :若单日日志超过 50MB,生成递增文件(如 app.2025-03-18.1.log.gz)。
4. 自动创建分级目录
4.1 按月份归档日志
若需将日志按月份存储到不同文件夹,使用 aux 标记辅助日期字段:
XML
复制代码
${LOG_DIR}/%d{yyyy-MM, aux}/app.%d{yyyy-MM-dd}.%i.log.gz
%d{yyyy-MM, aux} :生成月份目录(如 2025-03/),不参与滚动周期计算。
目录结构示例:
XML
复制代码
./logs/
└── 2025-03/
├── app.2025-03-17.0.log.gz
└── app.2025-03-18.0.log.gz
4.2 多级目录配置
XML
复制代码
${LOG_DIR}/%d{yyyy, aux}/%d{MM, aux}/%d{dd, aux}/app.%d{yyyy-MM-dd}.%i.log.gz
5. 常见问题与排查技巧
5.1 日志日期错乱
现象:3 月 18 日的日志写入 3 月 17 日的文件。
原因 :
服务器时间错误或时区不一致。
配置中多个 %d 未正确使用 aux 标记。
解决 :
使用 date 命令检查系统时间。
同步网络时间:ntpdate pool.ntp.org(Linux)。
5.2 文件未按大小分割
现象 :日志超过 maxFileSize 但未生成新文件。
原因 :
滚动策略类错误(如误用 TimeBasedRollingPolicy)。
文件权限不足。
解决 :
确认策略类为 SizeAndTimeBasedRollingPolicy。
检查日志目录读写权限:chmod 755 ./logs。
6. 最佳实践与避坑指南
6.1 时间同步
推荐工具 :
Linux:chrony 或 systemd-timesyncd。
Windows:启用 "自动设置时间"。
6.2 配置验证
快速测试 :
将 maxFileSize 设为 1MB,并写入测试日志,观察是否触发滚动。
6.3 版本管理
Logback 版本 :使用最新稳定版(如 1.4.11),避免已知 Bug。
Maven 依赖:
XML
复制代码
6.4 日志监控
磁盘报警:设置监控告警,当日志目录大小超过阈值时触发通知。
日志清理 :结合 maxHistory 和 totalSizeCap 避免磁盘耗尽。