繁体   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