Logrotate工具

Mikage Yuziki 发布于 15 天前 37 次阅读


1 Logrotate工具简介

logrotate 是 Linux 系统中一个非常重要的日志管理工具,用于自动轮转、压缩、删除和邮寄日志文件,防止日志文件过大占用过多磁盘空间。

1.1 主要功能

  • 日志轮转:按时间或大小分割日志
  • 日志压缩:压缩旧日志节省空间
  • 日志删除:删除过期的日志
  • 日志归档:保留指定数量的历史日志
  • 日志创建:轮转后创建新的日志文件

1.2 参数

2 配置示例

配置文件位置:

  1. 主配置文件(全局配置):/etc/logrotate.conf
  2. 服务特定配置:/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