今天工作遇到一个问题,简单说下问题:就是项目中有个定时任务【每十分钟】会去读另一台服务器的日志文件,这台服务器的日志是每小时生成一个日志文件【用的log4j】,日志文件格式是XXX.log.2014XXXX,当前小时生成的日志文件没有.log后面的时间后缀。问题是每到整点时去读那台服务器的日志,会读不到数据,不是整点的十分钟读那台服务器的日志都OK,正常。
当时很纳闷,和同事一起排查问题,查看resin的stdout日志发现定时任务到整点去读那台服务器的日志时,找不到日志文件File not found ,因为整点去读那台服务器的日志时读的是带有时间后缀的日志文件,不是整点的十分钟读取的是没有时间后缀的日志文件。由于整点时,那台服务器的当前日志文件已经生成了带时间后缀文件了,但由于应用服务器与日志文件服务器时间不一致,应用服务器时间快了,当定时任务整点去读日志文件时,有时间后缀的日志文件还没有生成,所以找不到文件。
解决办法:将应用服务器时间比日志服务器时间调慢了一分钟。