日志是Linux系统中最重要的部分之一,经过日志能够知道系统中正在发生什么或者发生过什么,极大的方便了系统管理,常见的linux发行版中都自带了logrotate程序来管理系统日志,固然logrotate也能够用来管理软件日志。使用logrotate有如下几点好处:
1.大多数系统自带,不用安装 
2.配置简单,功能很强大
3.可靠性高node

我生产上就是用Logrotate来管理tomcat日志,因为生产环境上tomcat比较忙碌,天天的日志都十几G,已经到了不起不分割的程度。配置方法:linux

首先要配置tomcat日志的分割,而后经过指定日志分割时间。web

1、配置tomcat的日志分割

在logrotate配置目录 /etc/logrotate.d/ 下新建一个名为tomcat的文件,内容为:centos

/opt/tomcat-7.0/logs/catalina.out{ rotate 2 copytruncate nocompress notifempty missingok nomail noolddir daily dateext }

这里参数的详细说明附在最后。tomcat

2、指定分割时间

因为logrotate是基于cronjob执行的,默认cronjob daily的定时任务执行时间是4:02分(centos 5系列),咱们是要天天的日志转储成一个新文件,而不是两天的日志混在一块儿,因此还要修改一下cron daily的执行时间:
centos 5 系列cronjob daily执行时间是在/etc/crontab文件中配置。post

59 23 * * * root run-parts /etc/cron.daily

注意时间是在天天23:59分执行,这里转储后的文件名中的日期才是正确的.测试

centos 6 系列daily、monthly等文件夹里面的任务已经不用crond处理,而是交给anacron处理,执行时间有延迟时间不是固定的,要自定义这些定时任务的执行时间有三种方法:url

1.关闭anacron,使用crond管理daily等任务的时间spa

yum remove cronie-anacron yum install cronie-noanacron

以后加上:

01 * * * * root run-parts /etc/cron.hourly 59 23 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

这样就和centos 5系列同样,能够经过修改/etc/crontab来控制定时任务执行时间了

2.编辑/etc/anacrontab文件
首先要设置RANDOM_DELAY=0和START_HOURS_RANGE=0-0,这样能够设置为天天零点执行,在将cron.daily设置成

1 0 cron.daily nice run-parts /etc/cron.daily

看了一下anacron说明和anacrontab文件的格式,以为这种方法可行,可是我没有测试,若是想用这种方法,请务必先测试。

3.将tomcat 文件放在其它目录,这样天天执行cron.daily时就不会分割,而后添加定时任务来分割

59 23 * * * root run-parts /usr/sbin/logrotate /root/tomcat

3、logrotate参数说明

参数名称 含义 compress 经过gzip 压缩转储之后的日志 nocompress 不压缩转储 copytruncate 打开中的日志转储 copytruncate 打开中的日志转储 nocopytruncate 备份日志文件,可是不截断 nocreate 不创建新日志 delaycompress 延迟压缩,和compress一块儿使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress 转储并压缩 errors address 转储时错误信息发送指定地址 ifempty 文件为空也转储 notifempty 若是文件为空,不转储 mail address 发送转储日志到指定邮箱 nomail 转储不发邮件 olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 noolddir 转储后的日志文件和当前日志文件放在同一个目录下 prerotate/endscript 在转储之前须要执行的命令能够放入这个对,这两个关键字必须单独成行 postrotate/endscript 在转储之后须要执行的命令能够放入这个对,这两个关键字必须单独成行 daily 按天存储 weekly 按周存储 monthly 按月存储 rotate count 日志转存保留的前多少份,多余的会被删除 tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~ size size 当日志文件到达指定的大小时才转储,Size 能够指定 bytes (缺省)以及KB (sizek)或者MB extension 指定转存日志后缀名,例如 .log dateformat 设置日志文件名日期格式默认为 %Y%m%d

参考文章:
http://blog.jikr.cn/logrotate-cut-the-web-logs/
http://abdussamad.com/archives/390-Scheduling-system-maintenance-cron-jobs-in-CentOSRHEL-6.x.html