一直以来做日志切割都是使用 shell + crontab 来搞,shell 脚本可以在网上找到各种版本的,改改就用了,懒省事。这样的做法很传统,却忽略了系统的给我们提供的优秀的工具 —— logrotate。
一、Logrotate 是什么
Logrotate是一个非常实用的工具,主要用于自动轮转、压缩和删除旧的日志文件,帮助保持系统日志文件的清洁和有序。这不仅可以节省磁盘空间,还可以提高系统的性能。Logrotate能够根据日志文件的修改时间、大小等条件,对日志文件进行轮转、压缩或删除操作。通过使用Logrotate工具,您可以轻松地管理日志文件,确保系统的正常运行和安全性。
二、Logrotate 安装
在大多数CentOS系统中,Logrotate已经默认安装。如果没有安装,您可以使用以下命令进行安装:
yum install -y logrotate
三、Logrotate 配置Nginx 日志切割
要使用Logrotate对Nginx日志进行切割,您可以按照以下步骤进行配置:
- 打开文本编辑器,进入/etc/logrotate.d/nginx文件。默认情况下,该文件应该是空的。
- 在文件中添加以下内容:
/usr/local/nginx/logs/*.log { # 这里的路径是要进行切割日志的路径daily # 按天进行切割 missingok # 如果没有日志文件,不报错继续处理下一个日志rotate 180 # 保留180个日志文件dateext # 按照日志文件名+年月日的格式保存nocompress # 不进行压缩,想压缩的话,使用 compresscreate 0640 root root # 权限 用户 组olddir /usr/local/nginx/logs/days # 切割后日志的存放路径sharedscripts # 这个很关键,增加这句,那么下面的命令在处理完所有日志后执行一次# 如果没有这句,那么处理完一个日志,执行一次下面的命令postrotateif [ -f /usr/local/nginx/logs/nginx.pid ]; thenkill -USR1 `cat /usr/local/nginx/logs/nginx.pid`fiendscript
}
- 保存并关闭文件。现在,Logrotate将根据配置自动对Nginx日志进行切割。
经过编辑和保存后,您可以检查Nginx日志切割的配置是否正确。使用以下命令来检查配置:
logrotate -d /etc/logrotate.d/nginx
如果配置正确,您将看到一条消息显示配置文件解析成功,并且没有错误或警告。这意味着您的配置是正确的,并且Logrotate将在指定的时间自动执行日志切割操作。
如果您想测试一下配置的效果,可以使用以下命令手动强制执行一次日志切割操作:
logrotate -f /etc/logrotate.d/nginx
执行后,请检查配置目录下是否存在切割后的日志文件。如果配置正确且测试执行成功,您将在指定的目录下看到切割后的日志文件。
四、Logrotate 其他
如果您想查看logrotate执行的时间,可以查看/etc/anacrontab文件。
如果您想查看logrotate执行的状态,可以查看/var/lib/logrotate/logrotate.status文件。这个文件记录了logrotate最近一次执行的状态信息,包括哪些日志文件被轮转、轮转的时间和日志文件的大小等信息。您可以使用文本编辑器打开该文件,查看其中的内容以获取有关logrotate执行状态的信息。