java - Log4J - 确定记录器是否无法写入文件系统

标签 java log4j

我正在尝试在我的应用程序中使用 Log4J,但我的问题是我想要运行此应用程序的计算机没有授予我对本地驱动器的写入权限。但 Log4J 不会抛出任何错误,它只是跳过日志记录。

所以我想做的是编写一些代码,如果 Log4J 无法写入本地文件系统,它将在我的应用程序中返回一些反馈/消息。有没有办法判断 Log4J 是否可以从 Log4J 本身写入本地文件系统?或者有什么方法可以确定 Log4J 在每次操作中已写入其日志文件中的字数?这样我就可以确定日志记录是否确实发生,然后采取适当的措施。

最佳答案

你读过FAQ吗?

引自网站

No. log4j is not reliable. It is a best-effort fail-stop logging system.

By fail-stop, we mean that log4j will not throw unexpected exceptions at run-time potentially causing your application to crash. If for any reason, log4j throws an uncaught exception, please send an email to the log4j-user@logging.apache.org mailing list. Uncaught exceptions are handled as serious bugs requiring immediate attention.

即使日志记录失败,我也希望我的应用程序能够继续。

您所描述的可能是“应用程序监控”功能。有很多工具可以查看特定文件系统是否已满或目录/文件是否有一段时间没有更改等。

话虽如此,您可以在应用程序一开始就进行基本检查 - 例如在用于日志记录的目录中创建文件的权限。

关于java - Log4J - 确定记录器是否无法写入文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799261/

相关文章:

java - 如何将 Jsoup Document[] 数组转换为 String[]?

java - Log4j.properties 在类路径上但未加载

java - Spring 启动 Web 应用程序 : Get Hibernate to use log4j

java - 无法将面板添加到 Miglayout

java - 如何使用 lambda 在字符串列表的某些元素中执行子字符串

Java:为什么 Thread.sleep() 和 yield() 是静态的?

java - log4j UTC 日期时间配置

java - 从 Tomcat 集群上的 3 个不同的 Web 应用程序进行日志记录

java - Netbeans + Java 9 模块 + Log4j 2.11 = 找不到模块

java - Animal a = new Horse() 和 Horse c = new Horse() 之间的区别