java - Log4j2 锁定 Tomcat 上的日志文件?

标签 java tomcat log4j log4j2

我有一个使用动态日期进行日志记录的 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/

相关文章:

gwt - 配置 gwt-log 的 remoteLogger;使用log4j把它放在一个单独的文件中

java - Spring 启动: Cannot load configuration class

java - 如何在 JVMTI 中获取完整的命令行?

maven - 在 Eclipse 中,如何运行修改上下文路径的 Tomcat Maven 插件

tomcat - 如何配置 Tomcat 以通过系统日志记录所有内容?

java - 如何使用 log4j.xml 为日志文件创建文件夹

java - OpenOffice.org 使用 Java 导入 csv

java - 自动将注释附加到 Netbeans 中自动插入的大括号

tomcat - 如何在tomcat中部署外部webapp?

batch-file - 带有服务停止/启动的通配符