我们在这里运行了几个java应用服务器,有几个应用程序。它们都使用Log4J登录到同一个文件系统,我们只是因为这个原因而创建的。 有时会发生文件系统空间不足而应用程序
log4j:ERROR Failed to flush writer,
java.io.IOException
不幸的是,Log4J无法从此错误中恢复,因此即使在文件系统中释放空间后,也不会再从该应用程序写入日志。除了重新启动应用程序之外,是否有任何选项,编程方式或设置方式,让Log4J再次运行?
答案 0 :(得分:3)
我没有对此进行测试,但logback的网站指出:
从I / O故障中恢复正常
Logback的FileAppender及其所有子类,包括 RollingFileAppender可以从I / O故障中正常恢复。从而, 如果文件服务器暂时失败,则不再需要重新启动 应用程序只是为了让日志再次运行。一旦文件 服务器恢复,相关的logback appender将透明 并迅速从之前的错误状态恢复。
我认为对于上述情况也是如此。
答案 1 :(得分:1)
你认为这是一个可以接受的结果吗?我会考虑编写一个新的Appender来包装任何一个appender正在访问磁盘,并在检测到IOExceptions时尝试做一些合理的事情。也许让它将底层Appender写入方法包装在try-catch块中,并向您或系统管理员发送电子邮件。
答案 2 :(得分:0)
限制日志的大小,并尝试使用自定义appender将日志存档到具有大量磁盘空间的备份计算机。