2012-03-21 67 views
0

我想在我的应用程序中使用Log4J,但我的问题是我想运行此应用程序的机器没有给我写入本地驱动器的权限。但Log4J不会抛出任何错误,它只是跳过日志记录。Log4J - 确定记录器是否无法写入文件系统

所以我想要做的是编写一些代码,如果Log4J不能写入本地文件系统,它会在我的应用程序中返回一些反馈/消息。有没有办法告诉Log4J能否从Log4J本身写入本地文件系统?或者有什么方法可以确定Log4J在每个操作中将多少个单词写入其日志文件?这样我才能确定是否实际记录日志,然后采取适当的措施。

回答

2

让你从网站

号log4j的是不可靠的读取FAQ

报价。这是一个尽力而为的故障停止记录系统。

通过失败停止,我们的意思是log4j不会在运行时抛出意外的异常 ,这可能会导致应用程序崩溃。如果对于任何 原因,log4j会抛出未捕获的异常,请发送电子邮件至 [email protected]邮件列表。未捕获的异常 被视为需要立即关注的严重错误。

即使记录失败,我更喜欢我的应用程序继续。

你所描述的可能是'应用程序监控'的一个功能。有许多工具可以查看特定的文件系统是否已满或者目录/文件暂时没有改变等。

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

+0

如果您进一步阅读......“但是,log4j会向System.err输出一条消息,指示无法执行日志记录。” – jahroy 2012-03-21 06:17:34

+0

感谢您的回应。我的意思是,是否有任何方法可以让我得到这个信息,即无法执行日志记录。如果有的话,请给我一些建议。 @jahroy所以我可以得到那个log4j发送给System.err的消息!它可能听起来很愚蠢的问题,但我不知道如何从System.err获取值...谢谢! – 2012-03-21 06:39:14