簡體   English   中英

無法在Java中獲取.log文件的鎖定

[英]couldn't get lock for .log file in Java

我正在使用來自Restlet框架的 Logger和FileHandler在生產模式下記錄我的應用程序。 但是,我總是得到Excetption“無法為Logger創建FileHandler:無法獲取test.log的鎖定”。 我怎么解決這個問題? 這是代碼:

FileHandler aFileHandler = new FileHandler("test.log");

Formatter aFormatter = new SimpleFormatter();

aFileHandler.setFormatter(aFormatter);

aLogger.setLevel(Level.ALL);

aLogger.addHandler(aFileHandler);

此日志文件由多個進程同時使用多個進程。

除了.log文件外,還創建了許多其他文件,如“.log.1,.log.2 .....”。 有人知道為什么嗎?

您應該提供完整的班級名稱。 LoggerFileHandler含糊不清。 但是我想你正在使用某種記錄器,可能是Log4j和RollingFileAppender,這就是你的文件被輪換的原因,即xxx.log.1和xxx.log.2。 某些其他進程/應用程序正在使用您的文件,這就是您無法鎖定該文件的原因。

我也得到了相同的錯誤,但是當我檢查文件的路徑時,它是錯誤的,因此在糾正路徑后它工作正常。 只需檢查路徑是否正確。

對於“很多其他文件”的問題,例如“.log.1,。log.2 .....”已經創建“,你必須刪除日志文件處理程序並在你不需要之后關閉它。 以下是供您參考的代碼。 log.removeHandler(fileHandler); fileHandler.close();

對我來說,記錄器沒有對即將創建日志文件的目錄的寫訪問權。 因此,我只是將路徑更改為保證完全訪問的地方(例如FileHandler aFileHandler = new FileHandler("D:\\\\test.log");問題就消失了。

我猜這可能是因為我沒有指定任何特定的文件路徑(如FileHandler("test.log"); ,在使用tomcat部署我的Web服務后,日志文件試圖在Catalina base directory上創建Catalina base directory或沒有寫訪問權限的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM