根据此链接,从版本log4j2开始,2.5可以从代码强制进行日志文件翻转。

https://issues.apache.org/jira/browse/LOG4J2-89

问题是:我该如何强制呢? RollingFileManager具有public synchronized void rollover()方法,由CronTriggeringPolicy调用。

但是如何在运行时创建该策略?

最佳答案

您可以使用CronTriggeringPolicy或所需的任何其他策略来配置RollingFileManager。

要以编程方式强制进行翻转,假设您已配置名称为“ RollingFile”的RollingFile Appender,则可以执行以下操作:

import org.apache.logging.log4j.core.LoggerContext;

LoggerContext lc = (LoggerContext)LogManager.getContext(false);
Appender app = lc.getAppender("RollingFile");
if (app instanceof RollingFileAppender) {
    ((RollingFileAppender)app).getManager().rollover();
}


实际上,CronTriggeringPolicy并非旨在动态更新日程表。

09-30 16:54