• 日志切割之logrotate


    logrotate简介:

      logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

    logrotate配置:

      主配置文件:

        /etc/logrotate.conf

      内容如下:

    # see "man logrotate" for details
    # rotate log files weekly-->指定日志转储周期为每周
    weekly
    
    # keep 4 weeks worth of backlogs-->指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份,即切分次数
    rotate 4
    
    # create new (empty) log files after rotating old ones-->是否创建新的日志文件在切分完老的日志后
    create
    
    # use date as a suffix of the rotated file-->使用日期作为切分文件的前缀
    dateext
    
    # uncomment this if you want your log files compressed-->是否对日志文件进行压缩
    #compress
    
    # RPM packages drop log rotation information into this directory-->包含/etc/logrotate.d下面所有的配置项
    include /etc/logrotate.d
    
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp {
        monthly
        create 0664 root utmp
            minsize 1M
        rotate 1
    }
    
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    
    # system-specific logs may be also be configured here.

      然后在/etc/logrotate.d/目录下可自行定义要切割的日志文件,先看一个系统默认的syslog的配置:

    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
    {
        sharedscripts
        postrotate   //在转储以后需要执行的命令,这个关键字必须单独成行
            /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        endscript 
    }

      再来看一个切分nginx的日志配置:

    /var/logs/nginx/*.log
    {
            rotate 180    //转储次数
            copytruncate  //用于还在打开中的日志文件,把当前日志备份并截断
            daily  //转储周期:每天
            dateext  //转储前缀
            compress  //启用压缩
            missingok  //如果日志文件丢失,继续下一个而不输出报错信息
    }

      再来看一个Logstash的日志切分配置:

    /var/log/logstash/*.log
    /var/log/logstash/*.err 
    /var/log/logstash/*.stdout 
    {
            daily
            rotate 7
            copytruncate
            compress
            delaycompress  //和compress一起使用时,转储的日志文件到下一次转储时才压缩
            missingok
            notifempty  //如果是空文件的话,不转储
    }

      可以根据需要,自行在/etc/logrotate.d/下定义即可,定义好后,配合crontab可实现日志自动切割:

    0 0 * * * /usr/sbin/logrotate -f /etc/logrotate.conf > /dev/null 2>&1

      一般情况下,主配置文件无需修改。

  • 相关阅读:
    Oracle 日期总结
    JavaScript 获取文件名,后缀名
    JavaScript Array pop(),shift()函数
    JavaScript Array splice函数
    Oracle 创建表空间、临时表空间、创建用户并指定表空间、授权,删除用户及表空间
    eclipse debug调试java程序的九个技巧
    Oracle dos连接数据库基本操作
    Oracle 隐式游标 存储过程
    Oracle 修改表名
    Oracle 时间 MM-dd形式转换
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/7249362.html
Copyright © 2020-2023  润新知