logrotate实现日志切割方式(转储)

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录logrotate日志切割(转储)背景日志切割配置文件/etc/logrotate.conf设置定时任务logrotate日志切割报错 文件不再同一个用户组下总结

logrotate日志切割(转储)

背景

系统每天凌晨1:59查看/data/nginx/log日志文件的大小,如果小于10M,不做任何处理,如果大于等于10M,触发日志转储,

转储后/data/nginx/log的大小为0,并且会在/data/nginx/logs/下生成一个通过gzip压缩的以当前日期命名的.gz文件

注意:该配置算不上是日志切割,因为当日志文件为25M时,也会归档为一个文件,并不是以10M为单位进行分割,只能称为日志转储。

日志切割配置文件/etc/logrotate.conf

cat > /etc/logrotate.conf << EOF /data/nginx/log {     missingok     notifempty     create 0640 root root     compress     dateext     olddir /data/nginx/logs/     rotate 50     size 10M } EOF

相关解释:

/data/nginx/log                #表示要做切割的日志文件名 missingok                      #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误 notifempty                     #如果日志文件为空,轮循不会进行 create 0640 root root          #以指定的权限创建全新的日志文件 compress                       #在轮循任务完成后,使用gzip压缩归档文件 dateext                        #使用当前日期作为归档文件的命名格式 olddir /data/nginx/logs/       #指定归档文件存放到/data/nginx/logs/目录下,/data/nginx/logs/需提前创建 rotate 50                      #最多存储50个归档文件,当生成第51个归档文件时,第1个会被删除 size 10M                       #当监听文件达到10M时进行切割归档

设置定时任务

echo “59 01 * * * /usr/sbin/logrotate -v /etc/logrotate.conf &> /var/log/logrotate.log” >> /var/spool/cron/root crond start

logrotate日志切割报错 文件不再同一个用户组下

分割日志时报错:

:error: skipping “/var/log/nginx/test.access.log” because parent

directory has insecure permissions (Its world writable or writable by

group which is not “root”) Set “su” directive in config file to tell

logrotate which user/group should be used for rotation.

xx 文件所属用户

添加“su root xx”到/etc/logrotate.d/nginx文件中即可

如下:

/var/log/nginx/*.log { su root public daily missingok rotate 52 compress delaycompress notifempty #ifempty create 0640 www-data adm sharedscripts postrotate [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容