我有一个使用动态日期进行日志记录的 log4j2.xml
配置。它在 tomcat
上运行。
<RollingRandomAccessFile name="TEST" fileName="my-application-${date:yyyy-MM-dd}.txt" filePattern="my-application-%d{yyyy-MM-dd}.txt">
<Policies>
<TimeBasedTriggeringPolicy modulate="true"/>
...
问题是滚动文件不起作用,记录器一直记录到旧文件。因此我在午夜运行以下命令:
((org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false)).reconfigure();
这会更新 log4j2 配置中的 date
时间戳,因此日志文件现在会在午夜滚动。
问题:旧 文件仍然有锁!即使它们不再被使用。
问题:如何强制 LogManager
也释放旧日志文件并关闭所有文件处理程序?
最佳答案
上面的 filePattern 将解析为与记录到的文件相同的文件名。这肯定会使滚动失败。
关于java - Log4j2 锁定 Tomcat 上的日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203752/