Repository: logging-log4j2 Updated Branches: refs/heads/master def6e10e3 -> 0e21f2a56
Allow check for rollover at startup Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/0e21f2a5 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/0e21f2a5 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/0e21f2a5 Branch: refs/heads/master Commit: 0e21f2a56e0d211558ba2ccd60a1667e6a7d2886 Parents: def6e10 Author: Ralph Goers <[email protected]> Authored: Sun Dec 6 12:59:03 2015 -0700 Committer: Ralph Goers <[email protected]> Committed: Sun Dec 6 12:59:03 2015 -0700 ---------------------------------------------------------------------- .../core/appender/rolling/CronTriggeringPolicy.java | 16 ++++++++++++++-- src/site/xdoc/manual/appenders.xml | 7 +++++++ 2 files changed, 21 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0e21f2a5/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java index ccb52a7..e272b31 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java @@ -28,6 +28,7 @@ import org.apache.logging.log4j.core.util.CronExpression; import org.apache.logging.log4j.status.StatusLogger; import java.text.ParseException; +import java.util.Date; /** * Rolls a file over based on a cron schedule. @@ -41,10 +42,12 @@ public final class CronTriggeringPolicy implements TriggeringPolicy { private RollingFileManager manager; private final CronExpression cronExpression; private final Configuration configuration; + private final boolean checkOnStartup; - private CronTriggeringPolicy(CronExpression schedule, Configuration configuration) { + private CronTriggeringPolicy(CronExpression schedule, boolean checkOnStartup, Configuration configuration) { this.cronExpression = schedule; this.configuration = configuration; + this.checkOnStartup = checkOnStartup; } /** @@ -54,6 +57,12 @@ public final class CronTriggeringPolicy implements TriggeringPolicy { @Override public void initialize(final RollingFileManager aManager) { this.manager = aManager; + if (checkOnStartup) { + Date nextDate = cronExpression.getNextValidTimeAfter(new Date(this.manager.getFileTime())); + if (nextDate.getTime() < System.currentTimeMillis()) { + manager.rollover(); + } + } configuration.getScheduler().scheduleWithCron(cronExpression, new CronTrigger()); } @@ -74,14 +83,17 @@ public final class CronTriggeringPolicy implements TriggeringPolicy { /** * Creates a ScheduledTriggeringPolicy. * @param configuration the Configuration. + * @param evaluateOnStartup check if the file should be rolled over immediately. * @param schedule the cron expression. * @return a ScheduledTriggeringPolicy. */ @PluginFactory public static CronTriggeringPolicy createPolicy( @PluginConfiguration Configuration configuration, + @PluginAttribute("evaluateOnStartup") final String evaluateOnStartup, @PluginAttribute("schedule") final String schedule) { CronExpression cronExpression; + final boolean checkOnStartup = Boolean.parseBoolean(evaluateOnStartup); if (schedule == null) { LOGGER.info("No schedule specified, defaulting to Daily"); cronExpression = getSchedule(defaultSchedule); @@ -92,7 +104,7 @@ public final class CronTriggeringPolicy implements TriggeringPolicy { cronExpression = getSchedule(defaultSchedule); } } - return new CronTriggeringPolicy(cronExpression, configuration); + return new CronTriggeringPolicy(cronExpression, checkOnStartup, configuration); } private static CronExpression getSchedule(String expression) { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0e21f2a5/src/site/xdoc/manual/appenders.xml ---------------------------------------------------------------------- diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml index 36b0f58..97679dd 100644 --- a/src/site/xdoc/manual/appenders.xml +++ b/src/site/xdoc/manual/appenders.xml @@ -2196,6 +2196,13 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity { for a full description of the expression. </td> </tr> + <tr> + <td>evaluateOnStartup</td> + <td>boolean</td> + <td>On startup the cron expression will be evaluated against the file's last modification timestamp. + If the cron expression indicates a rollover should have occurred between that time and the current + time the file will be immediately rolled over.</td> + </tr> </table> <h5>OnStartup Triggering Policy</h5> <p>
