记测试环境一个日志删除的问题

我转到现在这个海外事业部的时候,这边使用的开发环境和测试环境都是docker。每个开发者都有自己的docker开发环境,自测通过后,部署到测试环境。

但是使用的时候,发现开发环境和测试环境都有一个问题,就是不论是service还是portal的日志,每30分钟就被清空了,我以为是被log4j归档了,看了下归档文件夹,里面有这个日志文件,但是文件为空。

这个问题实实在在困扰我了好久,因为无法追查历史日志,导致测试报问题的时候,只能去重现实时tail日志,非常麻烦。

我一开始以为就是log4j配置的归档时间是每30分钟,但是我看了log4j的配置文件,是1个小时,线上也是这个配置,线上没有这个问题。

后来我怀疑,是不是这个docker本身对某些卷定时操作,但是我看了下docker的启动配置,也没有。

并且,每个人的开发环境和测试的测试环境都有这个问题,很很很很奇怪!

再来后,开发任务紧张,这件事就放下了。

上周,开始测一个大需求,测试又报问题,我才下定决心一定要搞定这个问题,毕竟,一定是哪块除了问题,只是我没有找到而已。

此之前,我做了一虚拟偶像直播时长统计的活动,用的是crontab执行php脚本获取数据并存储到redis中作排行。

我就想,会不会,也是有crontab任务把这个清空了吧。

于是

我执行了:

crontab -l

结果f发现两个从名字看起来就非常像凶手的任务:

05 16 * * * /bin/bash /home/work/local/zookeeper/bin/zkCleanup.sh > /dev/null 2>&1

*/30 * * * * /bin/bash /home/work/local/init/clean_log.sh > /dev/null 2>&1

然后查看了下这两个sh脚本,zkCleanup.sh是用来清除zookeeper的日志,clean_log.sh就是清除service和portal的日志的!

原来这个是带在docker里的,因为开发环境和测试环境的日志都是debug的,每天的日志非常多,经常磁盘爆满,所以整了一个定时清除日志的脚本。

后来,我把这个时间修改成了每天0点,问题迎刃而解。


最后修改于 2019-05-28