gpt4 book ai didi

java - 在运行锁定文件的tomcat时移动文件

转载 作者:行者123 更新时间:2023-11-28 22:29:26 25 4
gpt4 key购买 nike

我在运行时使用 log4j 在文本文件中记录信息。这是在 tomcat/conf 文件夹中找到的 log4j.properties 文件

log4j.additivity.com.ixaris.apps.genericapp.web.filter.HttpAccessFilter=false

log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.file.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.rollingPolicy.FileNamePattern = C:/dev/generic-app/generic-app.%d{yyyy-MM-dd}.log
log4j.appender.file.layout = org.apache.log4j.EnhancedPatternLayout
log4j.appender.file.layout.ConversionPattern = %m%n
log4j.appender.file.Locking=false

此文件已正确保存到我提供的路径中。然而,当创建时,这个文件立即被 tomcat 本身锁定。后来,当 tomcat 仍在运行时,我正在处理这个日志文件信息,我需要将这个文件移动到另一个文件夹:C:/dev/generic-app/Processed

我正在使用这段代码:

read = new BufferedReader(new FileReader(logFiles[i]));

//parse and upload records in file to db
parseLogFile(logFiles[i]);

//move files to processed folder
Files.move(logFiles[i].toPath(), new File(uploadedFolder.getAbsolutePath() + "\\\\" + logFiles[i].getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);

在 parseLogFile 中,我确保执行 read.close() 以释放文件中的任何流。

然而,这是抛出这个异常:

ERROR: Problem moving log files to Processed folder.
java.nio.file.FileSystemException: C:\dev\generic-app\generic-app.2014-11-03.log -> C:\dev\generic-app\Processed\generic-app.2014-11-03.log:
The process cannot access the file because it is being used by another process.

at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:286)
at java.nio.file.Files.move(Files.java:1345)
at log2db.Log2DB.main(Log2DB.java:90)

我还尝试使用 System.gc() 强制垃圾收集,但也没有成功。有什么建议么?谢谢!

最佳答案

我知道这是旧的,但以防万一其他人来这里寻找答案,您可以查看 windows 的 logrotate 实现。 https://sourceforge.net/p/logrotatewin/wiki/LogRotate/

请参阅 copytruncate 选项。

我只使用过 Linux 版本,但到目前为止,它在为我移动 tomcat 文件方面运行良好。

关于java - 在运行锁定文件的tomcat时移动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com