测试环境的日志没有定时切割,时间久了,文件比较大,不方便搜索查找。所以尝试写了下脚本。
1.脚本如下:
#!/bin/sh
log_dir='/app/logs/split'
monitor_file=$1
echo `date '+%Y-%m-%d %H:%M:%S'`'初始化切割日志文件为:'$monitor_file >> /app/logs/split/split.log
if [ ! $1 ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'输入参数为空,使用默认路径:/app/wktrait/apache-tomcat-8.5.29/logs/catalina.out' >> /app/logs/split/split.log
monitor_file=/app/XXX/apache-tomcat-8.5.29/logs/catalina.out #tomcat目录下的catalina.out文件的绝对路径
fi
log_name=`basename $monitor_file`
echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件名称为:'$log_name >> /app/logs/split/split.log
file_size=`du $monitor_file | awk '{print $1}'`
echo `date '+%Y-%m-%d %H:%M:%S'`'切割文件大小为:'$file_size >> /app/logs/split/split.log
if [ $file_size -ge 1024000 ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'文件大小大于 1024000 开始切割' >> /app/logs/split/split.log
if [ ! -d $log_dir ]
then
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割路径不存在,新建....' >> /app/logs/split/split.log
mkdir /app/logs/split #创建保存切割文件目录,这个路径可以自行修改,保存到你想要的目录
fi
echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....' >> /app/logs/split/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'开始切割日志....'
cp $monitor_file /app/logs/split/$log_name-`date +%Y%m%d%H%M%S`.log #保存日志文件
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。' >> /app/logs/split/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'日志切割完成。'
echo `date '+%Y-%m-%d-%H:%M:%S'`'文件切割' >> /app/logs/split/split.log #记录切割日志
echo `date '+%Y-%m-%d %H:%M:%S'`'开始清空源文件...' >> /app/logs/split/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'开始清空源文件...'
echo "" > $monitor_file #清空tomcat的log/catalina.out文件内容
echo `date '+%Y-%m-%d %H:%M:%S'`'清空源文件完成。' >> /app/logs/split/split.log
echo `date '+%Y-%m-%d %H:%M:%S'`'清空源文件完成。'
fi
脚本基本能实现切割功能,下一步就是定时了。网上搜索的是用的。
2. 用 crontab -e 编辑定时器代码
输入 crontab -e 命令在打开的窗口填写如下定时任务
*/1 * * * * sh /app/script/splitLog.sh /app/XXX/apache-tomcat-8.5.29/logs/catalina.out
然后保存退出。
参考链接: https://www.jb51.net/article/97116.htm
同时放上一个定时的介绍: https://www..com/mingforyou/p/3930636.html