[英]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 .....”。 有人知道為什么嗎?
您應該提供完整的班級名稱。 Logger
和FileHandler
含糊不清。 但是我想你正在使用某種記錄器,可能是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.