无法在Java中获取.log文件的锁定

时间:2011-04-18 09:13:16

标签: java logging

我正在使用Loglet 来自Restlet框架和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 .....”。有人知道为什么吗?

4 个答案:

答案 0 :(得分:2)

您应该提供完整的班级名称。 Logger& FileHandler含糊不清。但是我想你正在使用某种记录器,可能是Log4j和RollingFileAppender,这就是你的文件被旋转的原因,即xxx.log.1& xxx.log.2。 某些其他进程/应用程序正在使用您的文件,这就是您无法锁定该文件的原因。

答案 1 :(得分:2)

我也得到了相同的错误,但是当我检查文件的路径时,它是错误的,因此在纠正路径后它工作正常。只需检查路径是否正确。

答案 2 :(得分:0)

关于"许多其他文件的问题,如" .log.1,。log.2 ....."已创建",您必须删除日志文件处理程序并在您不需要它后将其关闭。 以下是供您参考的代码。         log.removeHandler(fileHandler); fileHandler.close();

答案 3 :(得分:0)

对我来说,记录器没有对即将创建日志文件的目录的写访问权。因此,我只是将路径更改为保证完全访问权限的位置(例如FileHandler aFileHandler = new FileHandler("D:\\test.log");,问题就消失了。

我猜这可能是因为我没有指定任何特定的文件路径(如FileHandler("test.log");,在使用tomcat部署我的Web服务后,日志文件试图在{{1}中创建或者某个没有写访问权限的地方。