0

我正在尝试初始化 FileHandler 以写入给定的文件名,并使用以下语法进行可选附加:

FileHandler fh = null;
fh = new FileHandler("C:\\Users\\Desktop\\New_folder\\logs\\slate\\TodayLoad-2013-10-24.log",true); 

但我得到的例外是:

java.io.IOException: Couldn't get lock for  C:\Users\Desktop\New_folder\logs\slate\TodayLoad-2013-10-24.log
    at java.util.logging.FileHandler.openFiles(Unknown Source)
    at java.util.logging.FileHandler.<init>(Unknown Source)
    at TodayLoad.Load.<init>(SlateSheetLoad.java:173)
    at TodayLoad.Load.SlateSheetLoad.main(SlateSheetLoad.java:423)

我该如何解决这个问题。

4

2 回答 2

0

可能您的文件正在被另一个进程访问。请参阅这篇可以帮助您 在 Java 中无法锁定 .log 文件的帖子

于 2013-10-24T16:51:47.893 回答
0

您会发现在写入 100 个日志文件后出现错误。根本原因是Java中的一个错误。参见,例如,

系统属性控制 java.util.logging.FileHandler 的 MAX_LOCKS 限制

增加 java.util.logging.FileHandler MAX_LOCKS 限制

这些参考资料还提出了一个解决方案:在执行日志记录的代码之前设置系统属性“jdk.internal.FileHandlerLogging.maxLocks”。例如,通过

 // Set maxLocks to 200. The default is 100.
 System.setProperty("jdk.internal.FileHandlerLogging.maxLocks", "200");
于 2020-04-09T10:25:30.750 回答