logrotate切分tomcat日志

          Syslog-ng服务是Linux系统中重要的日志服务, Syslog-ng服务只提供对log进行接收以及再处理(继续分发或者存储),但并不对产生的log文件进行管理,这样导致的后果就是可能这个文件越来越大,在我们这个项目中,由于忘了对日志文件进行管理,结果导致这个日志文件20多G,很有可能导致系统崩溃。

    日志文件管理这项工作其实是由logrotate模块来负责。
对于logrotate可以参考官网, 上面有详尽的介绍,最常用的三个方式为: 
logrotate /etc/logrotate.conf:重新读取配置文件,并对符合条件的文件文件进行rotate。 
logrotate -d /etc/logrotate.conf:调试模式,输出调试结果,但并不执行。 
logrotate -f /etc/logrotate.conf:强制模式,对所有相关文件进行rotate。
至于logrotate对文件进行管理时的所要执行的规则,可以在/etc/logrotate.d文件夹下创建文件,logrotate会在执行的时候自动读取相应的规则,比如,我在/etc/logrotate.d/路径下新建了一个名为syslog的文件,其中的内容为:
/log/test.log   
{   
         size 10M   
         create   
         start 10  
         rotate 4  
         compress   
         copytruncate   
}  
上面代码的意思为当文件/log/test.log的大小超过10M时就开始循环,允许logrotate创建文件,循环文件的开始为10,即文件为为test.log.10.gz,最多循环创建4个文件,即为test.log.13.gz,多于四个后开始在第一个上面循环,依次迭代。
这样在配置logrotate的规则的时候就相对非常灵活,当我需求改动,需要添加其他新的规则的时候,我就不必修改syslog文件中的规则,可以新创建一个文件,添加相应的规则即可。这种灵活的配置方式对编程来说是一大便利,对于编程来说就是更容易实现对规则的自动控制了。
另外的一个问题,logrotate规则配置好后怎么定时去执行呢?这个就可以交给Linux中的crontab来控制了,具体的crontab的配置可以参考官网,我这里给出我使用的demo:
执行:vi /etc/crontab
配置如下:
*/5 * * * * root /sbin/logrotate /etc/logrotate.conf  
表示每隔5分钟执行检查一次。
这样整个配置就基本上完成了。

logrotate具体部署过程:
sudo yum install logrotate

sudo touch /etc/logrotate.d/tomcat
sudo vim /etc/logrotate.d/tomcat
/usr/tomcat/logs/catalina.out {
        copytruncate
        daily
        rotate 60
        compress
        delaycompress
        missingok
}
#初次配置完强制执行一次logrotate
/usr/sbin/logrotate -f /etc/logrotate.d/tomcat
#更改logrotate切分时间,默认为/etc/cron.daily,执行时间不同系统会有区别,所以需要手动更改logrotate执行时间
su root
cd ~
mkdir cron
mv /etc/cron.daily/logrotate cron/
crontab -e
# m     h       dom     mon     dow     command

0       0       *       *       *       /root/cron/logrotate


附主要参数如下表:
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).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值