我研究了log4j的来源,发现log4j无法创建新的日志文件,它只是在删除日志文件时将错误消息打印到system.err
protected boolean checkEntryConditions() { if(this.closed) { LogLog.warn("Not allowed to write to a closed appender."); return false; } if(this.qw == null) { errorHandler.error("No output stream or file set for the appender named ["+ name+"]."); return false; } if(this.layout == null) { errorHandler.error("No layout set for the appender named ["+ name+"]."); return false; } return true; }我认为有两种解决方法
- 创建另一个cron线程以监视日志文件
- 在getLog或getInstance(singleton)中添加判断,检查日志文件是否存在,如果不存在则初始化log4j



