Linux下通过logrotate定时清理压缩软件日志,如mysql、nginx、tomcat

 

tomcat日志如果放任不管,那么日志文件会越来越大,查看起来也不方便。另外,如果catalina.out的大小超过了2G,那么tomcat可能在没有错误提示的情况下崩溃、无法启动。
所以为了避免出现这个问题,我们应该每天分割catalina.out,logrotate就很好的解决了这一问题。
一、logrotate介绍
logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间。一般centos系统已经自带安装好了。
logrotate是基于crontab运行的,其脚本是/etc/cron.daily/logtotate,日志轮转是系统自发完成的,实际运行时,logrotate会调用配置文件/etc/logrotate.conf。可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖logrotate.conf的缺省值。
二、logrotate使用示例
/opt/tomcat/logs/catalina.out {  
    rotate 14  
    daily  
    copytruncate  
    compress  
    notifempty  
    missingok  
    size 5M  
}

如果等不及cron自动执行日志轮转,想手动强制切割日志,需要加-f参数;不过正式执行前最好通过Debug选项来验证一下(-d参数),这对调试也很重要
# /usr/sbin/logrotate -f /etc/logrotate.d/nginx
# /usr/sbin/logrotate -d -f /etc/logrotate.d/nginx

logrotate命令格式:
logrotate [OPTION...]
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。

根据日志切割设置进行操作,并显示详细信息
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -v /etc/logrotate.conf 
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -v /etc/logrotate.d/php

根据日志切割设置进行执行,并显示详细信息,但是不进行具体操作,debug模式
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -d /etc/logrotate.conf 
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -d /etc/logrotate.d/nginx


三、logrotate常用参数
rotate 14 表示保留14天的备份文件  
daily 表示每天整理一次  
copytruncate 表示先复制log文件的内容,然后再清空  
compress 表示压缩备分文件  
missingok 表示如果日志不存在则忽略该警告信息
notifempty 表示如果log文件是空的,就不进行rotate
size(或minsize) log-size   当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem)。当日志文件 >= log-size 的时候就转储。 
以下为合法格式:
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k

 

size = 100M 或 size 100M

总结:logrotate是每天自行的,tomcat、mysql、nginx的一些日志都可以通过这个工具来定期清理的,我可以在/etc/cron.daily文件夹里面找到logrotate的配置文件,他是通过cron每天执行的。

你可能感兴趣的:(linux/tomcat)