1 Logrotate工具简介
logrotate 是 Linux 系统中一个非常重要的日志管理工具,用于自动轮转、压缩、删除和邮寄日志文件,防止日志文件过大占用过多磁盘空间。
1.1 主要功能
- 日志轮转:按时间或大小分割日志
- 日志压缩:压缩旧日志节省空间
- 日志删除:删除过期的日志
- 日志归档:保留指定数量的历史日志
- 日志创建:轮转后创建新的日志文件
1.2 参数

2 配置示例
配置文件位置:
- 主配置文件(全局配置):/etc/logrotate.conf
- 服务特定配置:/etc/logrotate.d/ 目录下的文件
2.1 主配置文件示例
# 全局设置
weekly # 每周轮转一次
rotate 4 # 保留4个轮转后的日志
create # 轮转后创建新文件
dateext # 使用日期作为轮转文件后缀
compress # 压缩轮转后的日志
include /etc/logrotate.d # 包含其他配置

2.2 特定配置文件示例
/etc/logrotate.d/repmgr 示例:
vi /etc/logrotate.d/repmgr
--可以配置多个日志,可以使用*模糊匹配
/data/repmgr/log/repmgrd.log xxxx*.log{
missingok
compress
rotate 52
maxsize 10M
daily
dateext
dateformat -%Y-%m-%d
create 0600 postgres postgres
olddir /data/repmgr/log/archive
postrotate
/usr/bin/killall -HUP repmgrd
endscript
}
2.3 配置参数
参数 | 说明 |
daily/weekly/monthly/yearly | 轮转周期 |
missingok | 文件不存在时不报错 |
rotate N | 保留N个轮转后的日志 |
size 10M | 日志达到指定大小时轮转 |
maxsize SIZE | 强制轮转的最大大小(即使未到轮转周期) |
compress | 使用gzip压缩旧日志 |
delaycompress | 延迟压缩前一个轮转的日志 |
notifempty | 空日志不轮转 |
create MODE OWNER GROUP | 轮转后创建新文件 |
dateext | 使用日期而非数字作为后缀 |
dateformat -%Y-%m-%d | 设置日期格式 |
olddir /xxx/archive | 旧日志移动到此目录 |
sharedscripts | 所有日志轮转后执行一次脚本 |
postrotate/endscript | 轮转后执行的脚本 |
2.4 手动执行
# 测试配置(不实际执行)
logrotate -d /etc/logrotate.conf
# 强制立即执行轮转
logrotate -vf /etc/logrotate.conf
# 只处理特定配置
logrotate -vf /etc/logrotate.d/nginx
2.5 状态文件
记录上次轮转状态的文件:
/var/lib/logrotate/status 或 /var/lib/logrotate.status 或 /var/lib/logrotate/logrotate.status
Comments NOTHING