开发者

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

开发者 https://www.devze.com 2023-05-11 10:01 出处:网络 作者: 运维@小兵
目录javascriptlogrotate日志切割(转储)背景日志切割配置文件/etc/logrotate.conf设置定时任务logrotate日志切割报错 文件不再同一个用户组下总结logrotate日志切割(转储)
目录javascript
  • 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
        comwww.devze.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/    #指定归档文件http://www.devze.com存放到/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 (It's 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/*.lo开发者_网络g {
              su root public
              daily
              missingok
              rotate 52
              comprandroidess
              delaycompress
              notifempty
              #ifempty
              create 0640 www-data adm
              sharedscripts
              postrotate
                      [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
              endscript
      }

      总结

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

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消