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 に答える