logrotate的简介

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

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

logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:

参数                   功能

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               当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB(sizek)或者MB (sizem).

 

二、logrotate安装

       yum -y install logrotate

 

三、自定义配置:(按需求定制)

[root@gy01 ~]# cd /u1/script/logsplit/

[root@gy01 logsplit]# cat nginx

/u1/logs/ng8080/*.log {

    sharedscripts

    rotate 8

    daily

    postrotate

    /usr/bin/killall-HUP nginx 2> /dev/null || true

    endscript

}

      

       [root@gy01 logsplit]#cat lbnginx

/u1/logs/lbnginx/*.log {

                  sharedscripts

                  rotate7

                   daily

                  postrotate

                   /usr/bin/killall-HUP lbnginx 2> /dev/null || true

                  endscript

}

 

       [root@gy01 logsplit]#cat php-fpm

/u1/logs/php/*.log {

                  sharedscripts

                  rotate7

                   daily

                  postrotate

                  /usr/bin/killall-12 php-fpm 2> /dev/null || true

                  endscript

}

 

       [root@gy01 logsplit]#cat rsync

/u1/script/rsync/logs/*.log {

                   sharedscripts

                  rotate7

                  daily

                  postrotate

                  endscript

}

 

四、定时脚本

       [root@gy01 logsplit]# crontab -e

#split lbnginx log

0      0       *       *      * (bash /u1/script/logsp.sh)

 

       [root@gy01 logsplit]#cat /u1/script/logsp.sh

#!/bin/bash

. ~/.bashrc

/usr/sbin/logrotate -f /u1/script/logsplit/lbnginx

/usr/sbin/logrotate -f/u1/script/logsplit/nginx

/usr/sbin/logrotate -f/u1/script/logsplit/php-fpm