logrotate是一个linux系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间/大小进行切割,压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。
yum install -y logrotate
mkdir -p /var/log/nginx/access_logs mkdir -p /var/log/nginx/error_logs
vim /etc/logrotate.d/nginx
/var/log/nginx/*access.log { daily # 按天分割日志 dateext # 使用日期作为分割后的日志文件的后缀 dateformat -%Y-%m-%d # 指定日期格式为-YYYY-MM-DD missingok # 如果日志文件不存在,不报错继续处理下一个日志文件 rotate 14 # 保留14个旧的日志文件 compress # 对分割后的日志文件进行压缩 delaycompress # 延迟到下一个轮转周期压缩日志文件 notifempty # 如果日志文件为空,不进行分割 create 0640 nginx adm # 以0640的权限创建新的日志文件,并设置所有者和所属组为nginx和adm olddir /var/log/nginx/access_logs # 指定旧的日志文件存放位置 sharedscripts # 脚本只运行一次而不是每个日志文件运行一次 postrotate # 在日志分割后执行的脚本 [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript } /var/log/nginx/*error.log { daily # 按天分割日志 dateext # 使用日期作为分割后的日志文件的后缀 dateformat -%Y-%m-%d # 指定日期格式为-YYYY-MM-DD missingok # 如果日志文件不存在,不报错继续处理下一个日志文件 rotate 14 # 保留14个旧的日志文件 compress # 对分割后的日志文件进行压缩 delaycompress # 延迟到下一个轮转周期压缩日志文件 notifempty # 如果日志文件为空,不进行分割 create 0640 nginx adm # 以0640的权限创建新的日志文件,并设置所有者和所属组为nginx和adm olddir /var/log/nginx/error_logs # 指定旧的日志文件存放位置 sharedscripts # 脚本只运行一次而不是每个日志文件运行一次 postrotate # 在日志分割后执行的脚本 [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }
logrotate -d /etc/logrotate.d/nginx
logrotate -f /etc/logrotate.d/nginx
ls /var/log/nginx/access_logs ls /var/log/nginx/error_logs