zoukankan      html  css  js  c++  java
  • logrtate 切割详解

     Logrotate是Linux下一款日志管理工具,可用于日志文件的转储(即删除旧日志文件,创建新日志文件)。可以根据日志大小或者按照某时段间隔来转储,内部使用cron程序来执行。
    Logrotate还可以在压缩日志,并发送到指定E-mail
        默认配置文件在/etc/logrotate.conf  /etc/logrotate.d为其包含文件 配置文件的时候需要写这个包涵
        
        logrotate 配置参数
            compress                        通过gzip压缩转储以后的日志
            nocompress                      不压缩
            copytruncate                    用于还在打开中的日志文件,把当前日志备份并截断
            nocopytruncate                  备份日志文件但是不截断
            create mode owner group         转储文件,使用指定的文件模式创建新的日志文件
            nocreate                        不建立新的日志文件
            delaycompress 和 compress        一起使用时,转储的日志文件到下一次转储时才压缩
            nodelaycompress                 覆盖 delaycompress 选项,转储同时压缩。
            errors address                   专储时的错误信息发送到指定的Email 地址
            ifempty                         即使是空文件也转储,这个是 logrotate 的缺省选项。
            notifempty                      如果是空文件的话,不转储
            mail address                    把转储的日志文件发送到指定的E-mail 地址
            nomail                          转储时不发送日志文件
            olddir directory                转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
            noolddir                        转储后的日志文件和当前日志文件放在同一个目录下
            prerotate/endscript             在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
            postrotate/endscript            在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
            daily                           指定转储周期为每天
            weekly                          指定转储周期为每周
            monthly                         指定转储周期为每月
            rotate count                    指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
            tabootext [+] list 让logrotate   不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
            size size                       当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)
        


    若干要点:

        每个部分首括号可与其他语句同行,尾行括号必须单独成行

        prerotate和postrotate可指定转储前后(即切割前后)执行的linux脚本(endscript结束),如

        /var/log/messages {
            prerotate                               //转储之前脚本
            /usr/bin/chattr -a /var/log/messages    //去掉该文件-a属性
            endscript                               //脚本结束
            postrotate                              //转储后脚本
            /usr/bin/kill -HUP syslogd              //重新初始化系统日志守护程序 syslogd
            /usr/bin/chattr +a /var/log/messages    //添加-a属性,防止文件被覆盖
            endscript
        }

        Logrotate的备份策略(以两个备份来说明,即rotate 2,文件error.log):原始文件error.log,经过一次转储,会生成error.log.1;第二次转储,生成error.log.2;第三次转储,error.log.n命名为error.log.n+1,同时生成新的error.log.1,删除error.log.n+1文件。

        转储可以通过强制执行来观察工作过程

        logrotate -vf /etc/logrotate.d/nginx。

        日志切割的执行时间是由cron程配置决定的,可查看/etc/crontab文件(cron时间戳格式:分时日月周)

        
    nginx日志切割:

        /var/log/nginx/*.log {      //注意:具体请以自己的nginx日志为准
        daily                   //每天切割
        dateext                 //%Y%m%d作为后缀
        missingok               //日志不存在,分析下一个
        rotate 2                //保留两个备份
        compress                //转储之后压缩.tar.gz
        notifempty              //空文件不转储
        create 640 nginx adm    //新日志文件模式
        sharedscripts           //整个日志组运行一次的脚本
        postrotate
                [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
                                //重启nginx,重新加载日志文件,防止不写
                `cp -f /var/log/nginx/*.* /var/log/nginx/backup`
                                //自定义脚本,将旧日志copy到backup文件夹(backup要存在)
        endscript
    }

  • 相关阅读:
    抽样调查
    一次项目上线发布的感想
    Nginx failing to load CSS and JS files (MIME type error)
    securecrt-active
    golang-http-post
    remove-weknow-ac from mac chrome
    批量写入redis
    golang 修改数组中结构体对象的值的坑
    golang使用json生成结构体
    json定义
  • 原文地址:https://www.cnblogs.com/kingle-study/p/9597651.html
Copyright © 2011-2022 走看看