翼度科技»论坛 云主机 服务器技术 查看内容

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

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
logrotate日志切割(转储)


背景

系统每天凌晨1:59查看/data/nginx/log日志文件的大小,如果小于10M,不做任何处理,如果大于等于10M,触发日志转储,
转储后/data/nginx/log的大小为0,并且会在/data/nginx/logs/下生成一个通过gzip压缩的以当前日期命名的.gz文件
注意:该配置算不上是日志切割,因为当日志文件为25M时,也会归档为一个文件,并不是以10M为单位进行分割,只能称为日志转储。

日志切割配置文件/etc/logrotate.conf
  1. cat > /etc/logrotate.conf << EOF
  2. /data/nginx/log {
  3.     missingok
  4.     notifempty
  5.     create 0640 root root
  6.     compress
  7.     dateext
  8.     olddir /data/nginx/logs/
  9.     rotate 50
  10.     size 10M
  11. }
  12. EOF
复制代码
相关解释:
  1. /data/nginx/log                #表示要做切割的日志文件名
  2. missingok                      #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误
  3. notifempty                     #如果日志文件为空,轮循不会进行
  4. create 0640 root root          #以指定的权限创建全新的日志文件
  5. compress                       #在轮循任务完成后,使用gzip压缩归档文件
  6. dateext                        #使用当前日期作为归档文件的命名格式
  7. olddir /data/nginx/logs/       #指定归档文件存放到/data/nginx/logs/目录下,/data/nginx/logs/需提前创建
  8. rotate 50                      #最多存储50个归档文件,当生成第51个归档文件时,第1个会被删除
  9. size 10M                       #当监听文件达到10M时进行切割归档
复制代码
设置定时任务
  1. echo "59 01 * * * /usr/sbin/logrotate -v /etc/logrotate.conf &> /var/log/logrotate.log" >> /var/spool/cron/root
  2. crond start
复制代码
logrotate日志切割报错 文件不再同一个用户组下

分割日志时报错:
  1. :error: skipping "/var/log/nginx/test.access.log" because parentdirectory has insecure permissions (It's world writable or writable bygroup which is not "root") Set "su" directive in config file to telllogrotate which user/group should be used for rotation.
复制代码
xx 文件所属用户
添加“su root xx”到/etc/logrotate.d/nginx文件中即可
如下:
  1. /var/log/nginx/*.log {
  2.         su root public
  3.         daily
  4.         missingok
  5.         rotate 52
  6.         compress
  7.         delaycompress
  8.         notifempty
  9.         #ifempty
  10.         create 0640 www-data adm
  11.         sharedscripts
  12.         postrotate
  13.                 [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
  14.         endscript
  15. }
复制代码
总结

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

来源:https://www.jb51.net/article/283979.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具