Log4J能够从磁盘恢复完整吗?

时间:2009-08-27 05:57:48

标签: java log4j

我们在这里运行了几个java应用服务器,有几个应用程序。它们都使用Log4J登录到同一个文件系统,我们只是因为这个原因而创建的。 有时会发生文件系统空间不足而应用程序

log4j:ERROR Failed to flush writer,                                             
java.io.IOException

不幸的是,Log4J无法从此错误中恢复,因此即使在文件系统中释放空间后,也不会再从该应用程序写入日志。除了重新启动应用程序之外,是否有任何选项,编程方式或设置方式,让Log4J再次运行?

3 个答案:

答案 0 :(得分:3)

我没有对此进行测试,但logback的网站指出:

  

从I / O故障中恢复正常

     

Logback的FileAppender及其所有子类,包括   RollingFileAppender可以从I / O故障中正常恢复。从而,   如果文件服务器暂时失败,则不再需要重新启动   应用程序只是为了让日志再次运行。一旦文件   服务器恢复,相关的logback appender将透明   并迅速从之前的错误状态恢复。

我认为对于上述情况也是如此。

答案 1 :(得分:1)

你认为这是一个可以接受的结果吗?我会考虑编写一个新的Appender来包装任何一个appender正在访问磁盘,并在检测到IOExceptions时尝试做一些合理的事情。也许让它将底层Appender写入方法包装在try-catch块中,并向您或系统管理员发送电子邮件。

答案 2 :(得分:0)

限制日志的大小,并尝试使用自定义appender将日志存档到具有大量磁盘空间的备份计算机。