一、logrotate简介

  1. logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。安装logrotate
  2. 默认centos系统安装自带logrotate,安装方法如下

yum -y install logrotate crontabs

  1. 软件包信息说明

[root@clsn6 ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf # 主配置文件
/etc/logrotate.d # 配置目录

  • logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。

    二、logrotate配置文件

    | 配置参数 | 说明 | | —- | —- | | monthly | 日志文件将按月轮循。其它可用值为’daily’,’weekly’或者’yearly’。 | | rotate 5 | 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。 | | compress | 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。 | | delaycompress | 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。 | | missingok | 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 | | notifempty | 如果日志文件为空,轮循不会进行。 | | create 644 root root | 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。 | | postrotate/endscript | 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 |

三、示例:

  1. 把apache日志加入轮替

[root@localhost ~]# vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log {
daily
create
rotate 30
}

  1. 把nginx日志加入轮替,压缩并删除一个月前日志
  • 设置计划任务

0 0 * /usr/sbin/logrotate -f /home/scripts/log/log_rotate.conf > /dev/null 2>&1

  • 编辑/home/scripts/log/log_rotate.conf配置文件

/var/log/httpd/nginx/access.log {
copytruncate
missingok
rotate 30
daily
olddir /var/log/httpd/nginx
postrotate
/bin/mv /var/log/httpd/nginx/access.log.1 /var/log/httpd/nginx/access.log.Nohostname.date +%Y_%m_%d -d "1 day ago"
/bin/gzip -9 /var/log/httpd/nginx/access.log.Nohostname.date +%Y_%m_%d -d "1 day ago"
/bin/rm -f /var/log/httpd/nginx/access.log.Nohostname.date +%Y_%m_%d -d "30 day ago".gz
endscript
}

  1. 测试查看效果

/usr/sbin/logrotate -f /home/scripts/log/log_rotate.conf
image.png

四、logrotate命令

  1. [root@localhost ~]# logrotate [选项] 配置文件名
  2. 选项:
  • 如果此命令没有选项,则会按照配置文件中的条件进行日志轮替 | -v: | 显示日志轮替过程。加了-v选项,会显示日志的轮
    替的过程 | | —- | —- | | -f: | 强制进行日志轮替。不管日志轮替的条件是否已经
    符合,强制配置文件中所有的日志进行轮替 |