您的位置:首页 > 运维架构 > Linux

linux日志分割处理工具logrotate

2017-03-24 11:19 260 查看
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。

logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

Logrotate是基于CRON来运行的,其脚本是「/etc/cron.daily/logrotate」

实际运行时,Logrotate会调用配置文件「/etc/logrotate.conf」

这里的设置可以理解为Logrotate的缺省值,当然了,可以我们在「/etc/logrotate.d」目录里放置自己的配置文件,用来覆盖Logrotate的缺省值。

logrotate 是安装系统时就可以装上去的,很多的大流量网站都是使用这个来进行Log的切换。

不用 Kill nginx pid, 不用restart nginx,只要重新载入一下就可以了。

nginx日志分割:

在/etc/logrotate.d/目录下生成nginx文件

/mnt/nginx/logs/*.log {      //注意:具体请以自己的nginx日志为准

    daily                   //每天切割

    dateext                 //%Y%m%d作为后缀

    missingok               //日志不存在,分析下一个

    rotate 20                //保留最近的20个备份

    compress                //切换之后压缩.tar.gz

    notifempty              //空文件不转储

    create 640 root root    //新日志文件模式 root 是使用的用户

    sharedscripts           //整个日志组运行一次的脚本

    postrotate

    /mnt/nginx/sbin/nginx reload > /dev/null 2>/dev/null || true

    endscript

}

如果你等不及CRON,可以通过如下命令来手动执行:

shell> logrotate -f /etc/logrotate.d/nginx

当然,正式执行前最好通过Debug选项来验证一下,这对调试也很重要,验证的过程不会真的转存:

shell> logrotate -d -f /etc/logrotate.d/nginx

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文件。

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

    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要存在)

 cat /var/lib/logrotate.status
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: