日志滚动是log4j简单好用的功能,只需要简单配置一个RollingFileAppender就可以了。在使用RollingFileAppender的时候,大家都会以为,日志将在临晨零时作日志切换,原来的日志文件被改名,新的日志文件被创建。这是个很合理的“想当然”推断。
但是事实不是这样的。日志的切换并不一定发生在零点,而是发生在:次日第一条日志写入的时候。网上几乎查不到RollingFileAppender日志文件切换的准确描述,基本上都是“想当然”的版本。
发现这个细节,完全出自巧合。一个被配置为日滚动的配置文件被一个清理老旧日志的脚本无端删除。我原本的想法是,由于配置了日滚动,那么文件将在每天零时被切换,那么最新的日志文件总是保持“新鲜”。“新鲜”的文件是不应该被删除的!后来却发现,原来这个日志文件自被创建以来就没有新的日志被写入,没有触发日志文件切换所致。