利用logrotate和crontab做日志的自动转储

一、logrotate主要用来对日志进行转储

logrotate是linux的自带命令,一般都会装有

  • logrotate -s statefile conffile
    logrotate命令后面可以接一个state文件,记录了转储的状态,最后加上参数文件,定义按照什么样的规则进行日志的转储

  • Linux系统中有每日执行转储的脚本可以查看参考

    注意看下参数文件说明

    上面有定义了执行周期、保存时间、是否压缩、转储文件名等,自定义的参数文件在/etc/logrotate.d目录下,例如:

    /var/log/test.log {          #指定对什么日志文件进行转储
    daily
    compress
    delaycompress
    olddir /data/tomcatlogs/tomcat
    copytruncate
    rotate 30
    size=30M
    dateext
    missingok
    notifempty
    create 644 admin admin   #创建新文件的归属和权限
    dateext
    dateformat _%Y-%m-%d-%s
    }
    
    • daily 按天进行生成 daily monthly
    • compress 通过gzip 压缩转储以后的日志
    • delaycompress 延迟压缩
    • olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
    • copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
    • rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
    • size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
    • dateext 文件后缀是日期格式,也就是切割后文件是:xxx.log-20150828.gz
    • missingok 如果日志不存在则忽略该警告信息
    • notifempty 如果是空文件的话,不转储
    • create 表示日志被移动后,是否在原地要再建立一个日志,这个很重要,不然写不进去新内容
    • dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号.
    • dateformat 配合dateext使用可以为切割后的日志加上YYYYMMDD格式的日期,如dateformat -%Y%m%d
  • 以下为强制执行
    logrotate -f /etc/logrotate.d/test-log

  • 如果先测试用,可以使用 -d
    logrotate -d /etc/logrotate.d/test-log

二、crontab用来做定时任务

  • 虽然在logrotate里面可以定义执行周期,但是可能不能满足实际需要,需要配合crontab定时任务来执行
  • 实例对/var/log/nginx.log日志文件进行转储,写满10M就进行转储,最多保存5个文件。
    若直接调用原有脚本和参数文件,即使是每5分钟执行一次,也会因为文件名的问题而报错,建议将原有的脚本和参数文件复制出来进行修改:
    • mkdir -p /u01/script/ && cp /etc/cron.daily/logrotate /u01/script/ && cp /etc/logrotate.conf /u01/script
    • vim /u01/script/logrotate 修改后面的调用的参数文件为"/u01/script/logrotate.conf"
    • vim /u01/script/logrotate.conf 将其中#dateext注释掉
    • crontab -e 添加定时任务:
      */5 * * * * /u01/script/logrotate
    • 创建自定义参数文件,vim /etc/logrotate.d/logwire,添加如下内容:
    /var/log/nginx.log {
    missingok
    compress
    copytruncate
    size=10M
    rotate 5
    create 0600 root root
    }
    
posted @ 2020-10-12 14:34  灬夜露沁心灬  阅读(684)  评论(0编辑  收藏  举报