问题
sudo du -sh /opt/tomcat/logs/*
...
4.5G /opt/tomcat/logs/catalina.out
...
Tomcat在Cent OS上面的日志文件catalina.out达到了4G多。
解决
logrotate
创建配置文件
vi /etc/logrotate.d/tomcat
编写配置文件:
/opt/tomcat/logs/catalina.out {
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
配置说明:
:需要归档的日志路径/opt/tomcat/logs/catalina.out
copytruncate
:复制截断模式daily
:每天触发一次rotate
:最多7个日志文件compress
: 使用压缩missingok
:如果缺少日志文件,请继续执行下一个日志文件而不发出错误消息size
: 仅当日志文件大小超过字节大小时才会轮换日志文件
这样logrotate就每天自动触发一次日志切割归档。
测试logrotate轮写日志
logrotate -v /etc/logrotate.conf
...
rotating pattern: /opt/tomcat/logs/catalina.out 5242880 bytes (7 rotations)
empty log files are rotated, old logs are removed
considering log /opt/tomcat/logs/catalina.out
log needs rotating
rotating log /opt/tomcat/logs/catalina.out, log->rotateCount is 7
dateext suffix '-20180928'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /opt/tomcat/logs/catalina.out to /opt/tomcat/logs/catalina.out-20180928
set default create context
truncating /opt/tomcat/logs/catalina.out
compressing log with: /bin/gzip
...
然后,在tomcat的logs文件夹下面查看一下,是否对catalina.out文件进行了轮写备份。
[admin@Servicenumber logs]$ ls -lh
总用量 23M
...
-rw-r-----. 1 tomcat tomcat 249K 9月 28 09:30 catalina.out
-rw-r-----. 1 tomcat tomcat 566K 9月 28 09:27 catalina.out-20180928.gz
...
看到了gz文件,说明logrotate没有问题了。
logrotate的日志文件
/var/lib/logrotate.status
注意
使用logrotate时候,一定要确保tomcat日志输出位置是位于/var/log/tomcat/catalina.out
才能够生效。不是操作系统的/var/log/
日志输出位置,logrotate是无法启用的。
参考
How to Rotate Tomcat catalina.out
处理Tomcat日志catalina.out日志文件过大的问题(第二种方法适合各种日志的切割)