tomcat日志轮转
tomcat日志轮转
logrotate
是一个用于管理和轮转日志文件的工具,通常在类 Unix 系统中使用。它可以帮助系统管理员自动化日志文件的管理,防止日志文件占用过多的磁盘空间。以下是关于 logrotate
服务的详细介绍,包括其工作原理、配置方法和常见用法。
工作原理
logrotate
的主要功能是定期轮转、压缩、删除和邮件发送日志文件。它通过读取配置文件来确定哪些日志文件需要轮转以及如何轮转。logrotate
通常在系统的 cron 作业中定期运行,通常是每天或每周。
配置文件
logrotate
的配置文件通常位于 /etc/logrotate.conf
,并且可以在 /etc/logrotate.d/
目录中为特定应用程序创建单独的配置文件。
一、为tomcat配置logrorate轮转
① 匹配/opt/目录下所有以tomcat7-开头或tomcat8-*开头的目录
[root@localhost ~]# vim /etc/logrorate.d/tomcat7
/opt/tomcat7-*/logs/catalina.out { su root root daily rotate 15 missingok dateext compress notifempty copytruncate size 20M }
这个配置将会对每个匹配的catalina.out
日志文件执行以下操作:
su root root
:在执行日志轮换时,切换到root用户。daily
:每天执行日志轮换。rotate 15
:保留最近的15个日志文件。missingok
:如果日志文件在轮换时不存在,不报错。dateext
:使用日期扩展来命名日志文件,例如catalina.out-2023-04-01.log.gz
。compress
:轮换后的日志文件将被压缩。notifempty
:如果日志文件为空,不执行轮换。copytruncate
:在日志轮换时,复制日志文件然后截断原始文件,而不是移动文件。size 20M
:当日志文件达到20MB时执行轮换。
② 单独匹配某个目录
[root@localhost ~]# vim /etc/logrotate.d/tomcat
/opt/tomcat7-2/logs/catalina.out { su root root (如有权限问题,添加此条)
daily rotate 15 missingok dateext compress notifempty copytruncate size 20M }
手动截断日志
[root@localhost ~]# logrotate --force /etc/logrotate.d/tomcat
二、业务日志清理(配合crontab):
/opt/tomcat7-1/logs
/opt/tomcat7-2/logs
直接匹配 tomcat7-* 或 tomcat8-* 目录
[root@localhost ~]# crontab -e 0 2 * * * find /opt/tomcat7-*/logs -mtime +7 -exec rm -rf {} \; 0 2 * * * find /opt/tomcat8-*/logs -mtime +7 -exec rm -rf {} \;
不针对访问日志:
[root@localhost ~]# crontab -e
0 2 * * * find /opt/tomcat7-1/logs -mtime +7 -exec rm -rf {} \; 0 2 * * * find /opt/tomcat7-2/logs -mtime +7 -exec rm -rf {} \;
针对访问日志:
[root@localhost ~]# crontab -e
0 2 * * * find /opt/tomcat7-1/logs -name 'localhost_access_log.202*' -mtime +7 -exec rm -rf {} \; 0 2 * * * find /opt/tomcat7-1/logs -name 'localhost.202*' -mtime +7 -exec rm -rf {} \; 0 2 * * * find /opt/tomcat7-2/logs -name 'localhost_access_log.202*' -mtime +7 -exec rm -rf {} \; 0 2 * * * find /opt/tomcat7-2/logs -name 'localhost.202*' -mtime +7 -exec rm -rf {} \;