我正在使用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 .....”。有人知道为什么吗?
答案 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}中创建或者某个没有写访问权限的地方。