系统环境:
操作系统:centos7.9
tomcat-9.0.50
问题起因:
近日突然发现磁盘占用率很高,经过排查发现tomcat下的catalina.out文件太大导致的。catalina.out文件一直在累加,没有根据时间进行每天切割,下面我们就操作进行每天切割,然后定期删除以前的无用日志。
方案一:cronolog
1、安装cronolog
使用cronolog包实现按日期分割catalina.out日志文件
yum install -y cronolog
查看cronolog安装目录,方便后期使用
which cronolog
2、修改bin/catalina.sh文件
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
扫描二维码关注公众号,回复: 14457051 查看本文章![]()
| /usr/sbin/cronolog "$CATALINA_BASE"/logs/catalina.out"-`date "+%Y-%m-%d"`".log >> /dev/null &
3、重启tomcat,进行测试
重启后,发现已经生成了新的日志文件,操作成功。
方案二:logrotate
1、如果要压缩日志,需要先取消配置文件的注释。
vim /etc/logrotate.conf
2、 添加指定文件,在/etc/logrotate.d/目录下新建一个文件进行配置。
vim /etc/logrotate.d/tomcat
/home/tomcat/logs/catalina.out{ #需要进行轮转的文件
su root root
copytruncate #备份日志并截断源文件
daily # 每天进行文件的轮转
rotate 30 #指定日志文件删除之前转储的次数
missingok # 如果要轮转的文件丢失了,继续轮转而不报错
size 100M #当文件大于100MB时,就会轮转
compress #将日志进行压缩delaycompress #延迟压缩,先rotate,等到下次rotate时,才压缩上次的日志。
dateext #使用当期日期作为命名格式
dateformat .%Y-%m-%d
}
3、执行方式:自动执行
(1)、每天晚上crond守护进程会运行在/etc/cron.daily目录中的任务列表;
(2)、与logrotate相关的脚本也在/etc/cron.daily目录中。运行的方式为"/usr/bin/logrotate /etc/logrotate.conf";
(3)、/etc/logrotate.conf文件include了/etc/logrotate.d/目录下的所有文件。还包括我们上面刚创建的tomcat文件;
(4)、/etc/logrotate.d/tomcat文件会触发/usr/local/apache-tomcat-8.0.28/logs/catalina.out文件的轮转。
手动执行:
logrotate /etc/logrotate.conf #执行所有的logrotate
logrotate --force /etc/logrotate.d/tomcat #只轮转刚刚的tomcat配置文件