根据此链接,从版本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并非旨在动态更新日程表。