前言
嗯~~他们都说红色标题喜庆,哈哈,嘤嘤嘤。。
今天这篇博客记录一下如何将tomcat日志,分割
成每天一个日志文件,方便保存和查询。
也就是将tomcat下面的 catalina.out
(默认日志输入文件)分隔成独立的日志文件,名字以catalina.year-month-day.log命名,例如catalina.2018-07-23.log
ps:如果对linux crontab
和 find + 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
往后余生,风雪是你。