Linux 定时任务 将Tomcat日志 按每天分割

前言

嗯~~他们都说红色标题喜庆,哈哈,嘤嘤嘤。。
今天这篇博客记录一下如何将tomcat日志,分割成每天一个日志文件,方便保存和查询。
也就是将tomcat下面的 catalina.out(默认日志输入文件)分隔成独立的日志文件,名字以catalina.year-month-day.log命名,例如catalina.2018-07-23.log

ps:如果对linux crontabfind + rm联合操作 不是很了解的同学,请一定先看完下面两篇博客。贴上博客原文链接:
1.关于Crontab:Linux Crontab 安装使用详细说明
2.关于find+rm:linux的一个find命令配合rm删除某天前的文件

思路

先说说我为什么突然想要处理一下tomcat日志呢??因为今天早晨,我查看公司正式服日志的时候,发现打开日志有些卡顿。

开始以为是网太慢,导致正式服务器卡顿。而测试服却没有任何异常。
后面老大让我看看日志文件的大小。不看不知道,一看吓了一跳。上周五是我们这个项目第一次推送,当时看了下日志大小才40M。没想到仅仅周末两天,新注册用户已经有接近4w了。日志文件更是快接近500M了;真是恐怖呢!!日志大小如截图:
这里写图片描述
嗯~~三天时间,日志就快接近500M了,该处理了!
这里,我们使用定时任务来处理日志,linux 的crontab组件也就派上用处了。希望你们看了上面我推荐的那两篇博客。
也就是先写个脚本,作用就是将当前的catalina.out中的内容复制到一个新的日志文件catalina.2018-07-23.log
中,复制完后,将catalina.out清空。然后让linux系统每天凌晨按时帮我们执行这个脚本,就OK了。也就达到了将日志分割开的目的。

操作

1.切换到tomcat的logs文件夹下面,查看当前日志:

cd /opt/tomcat_wft/logs/ # 打开日志文件目录

这里写图片描述
2.查看tomcat默认输入日志大小

ll -h catalina.out      # ll + `-h` + 文件名 :查看文件大小

这里写图片描述
3.切换到脚本文件目录:

cd /opt/sh/ # 打开脚本文件所在目录

4.新建脚本auto-deal-log.sh

echo '' > auto-deal-log.sh

5.编写脚本auto-deal-log.sh
以下是完整的脚本,很简单。

# 复制日志文件内容到新的文件中
cp /opt/softinstall/tomcat_gxj_01/logs/catalina.out /opt/softinstall/tomcat_gxj_01/logs/catalina_`date -d '-1 days' +%Y%m%d`.log

# 清空tomcat默认日志输出文件
echo "" > /opt/softinstall/tomcat_gxj_01/logs/catalina.out

# 如果有多个tomcat,复制一份即可
cp /opt/softinstall/tomcat_gxj_02/logs/catalina.out /opt/softinstall/tomcat_gxj_02/logs/catalina_`date -d '-1 days' +%Y%m%d`.log
echo "" > /opt/softinstall/tomcat_gxj_02/logs/catalina.out

# 查找并清理不需要的文件
find /opt/softinstall/tomcat*/logs/ -mtime +7 -name "*" -exec rm -rf {} \;

6.脚本授权

chmod -R 777 /opt/sh/auto-deal-log.sh  # 授权,便于执行脚本

7.如果是在正式服,建议执行脚本前,先备份日志

cp /opt/softinstall/tomcat_gxj_02/logs/catalina.out /opt/softinstall/tomcat_gxj_02/logs/catalina.apk.out    # 备份 catalina.apk.out为备份之后的文件

8.这个时候可以测试我们的脚本了

./opt/sh/auto-deal-log.sh  # 执行脚本

ok,到了这里,脚本执行成功后,看默认日志输出文件是否被清空,且生成了昨天的日志文件。如果都没问题,就可以指定linux的Crontab每日凌晨执行一次这个脚本了。

9.设置crontab指令,指定每日定时任务

crontab -l # 查看当前是否存在任务
crontab -e # 编辑 指定执行哪个脚本以及执行时间
0 0 * * * /opt/sh/auto-deal-log.sh     # 每日凌晨执行分割日志脚本


ps:A.编辑完成后,:wq保存并退出  

操作如下面截图:
这里写图片描述
这个时候,或许你还要了解一下定时任务语法:
这里写图片描述
详情请点击这里:Linux系统编写定时任务流程规范及注意事项

10.操作Crontab,让配置生效

service crond reload    //重新载入配置  前提是crond已经启动

Ok。。等明天早上再来看看,你的脚本是否执行了吧,QAQ

往后余生,风雪是你。

猜你喜欢

转载自blog.csdn.net/qq_22638399/article/details/81169661