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>

Reply via email to