使用系统自带的logrotate进行切割:
(安装:yum install logrotate -y)
在/etc/logrotate.d/文件夹下新建文件,内容如下:
vim /etc/logrotate.d/tomcat
/application/Tomcat8.5.57/logs/catalina.out { copytruncate daily rotate 90 missingok compress dateext dateformat_%Y-%m-%d }
参数解析:
/application/Tomcat8.5.57/logs/catalina.out:为tomcat的日志路径
copytruncate: 用于还在打开中的日志文件,把当前日志备份并截断
daily:日志文件将按天轮询,其它可用值为‘monthly’,‘weekly’或者‘yearly’
rotate :指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
missingok :如果日志不存在则忽略该警告信息,继续下次的轮询
compress: 通过gzip 压缩转储以后的日志
dateext :切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号.
dateformat :配合dateext使用可以为切割后的日志加上YYYYMMDD格式的日期,如dateformat -%Y%m%d
其余参数:
notifempty :如果是空文件的话,不转储
size :当日志文件到达指定的大小时才转储(单位可以为bytes、KB、MB)
olddir:带路径,将轮替后的日志文件存放到指定目录
mail:将轮替后的文件发送到指定E-mail地址
...........................................
可以手动执行测试:/usr/sbin/logrotate -vf /etc/logrotate.d/tomcat
-
-?或--help:在线帮助;
-
-d或--debug:详细显示指令执行过程,便于排错或了解程序执行的情况;
-
-f或--force :强行启动记录文件维护操作(强制转存日志);
-
-s<状态文件>或--state=<状态文件>:使用指定的状态文件;
-
-v或--version:显示指令执行过程;
-
-usage:显示指令基本用法。
工作原理:
crontab会每天定时执行/etc/cron.daily
目录下的脚本,而这个目录下有个文件叫logrotate;
cat /etc/cron.daily/logrotate
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0