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

der*_*oni 7 java log4j

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

log4j:ERROR Failed to flush writer,                                             
java.io.IOException
Run Code Online (Sandbox Code Playgroud)

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

Gar*_*ryF 1

您认为什么是可接受的结果?我会考虑编写一个新的 Appender 来包装正在访问磁盘的任何 Appender,并在检测到 IOException 时尝试执行一些明智的操作。也许让它将底层 Appender 写入方法包装在 try-catch 块中,并向您或系统管理员发送一封电子邮件。

  • 如果您使用的是 OnlyOnceErrorHandler,则可以考虑使用 FallbackErrorHandler (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/varia/FallbackErrorHandler.html)。这样,当第一个附加程序无法再写入时,您可以指定第二个附加程序(可能是电子邮件附加程序)。这将处理很多包装要做的事情。 (4认同)