使用 logrotate 定期分割日志文件

日志文件会持续增长,但又容易被我们遗忘,所以推荐设置定期分割,只保留最近几次分割的日志,自动删除时间较久远的日志,这样就可以控制日志在一定大小内。

日志自动分割是 logrotate 命令实现的,系统一般已经自动将 logrotate 的运行添加在了 crontab 中,每天会定时运行。如 Ubuntu 中,logrorate 的定期执行被加在 /etc/cron.daily/ 目录下。

logrotate 在运行时,会读取 /etc/logrotate.d/ 目录下的配置文件。配置文件告诉 logrotate 命令,需要扫描哪些目录的哪些文件,通过某些命令分割、压缩、保存。

下面是一个例子:

/日志文件所在的文件/*.log {
    daily # 每天执行
    rotate 7 # 保留最近 7 次日志
    size 5k # 如果日志文件大小小于 5k,则不分隔
    notifempty # 如果日志文件为空,则不分割,其实有了上一条,这条不需要
    dateext
    dateformat -%Y-%m-%d
    create 0640 www-data www-data # 在处理完当前日志后,创建一个新的空空文件,权限为 0640,用户为 www-data,用户组为 www-data
    missingok # 如果文件不存在,不输出错误消息
    compress # 分隔后压缩
    sharedscripts
    postrotate
        test -r /var/run/nginx.pid && kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

更多的配置项可以通过 man logrotate 阅读。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

ffmpeg 常用操作
Previous post
使用 samba + git 搭建公司内网共享文件服务器
Next post