You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2023/01/03 01:11:12 UTC

[logging-log4j2] 01/02: LOG4J2-3357 - use time trigger was scheduled to fire instead of current time.

This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit cdca105dea3ccf5df53622c0f16edfc4837960ac
Author: Ralph Goers <rg...@apache.org>
AuthorDate: Mon Jan 2 18:08:41 2023 -0700

    LOG4J2-3357 - use time trigger was scheduled to fire instead of current time.
---
 .../logging/log4j/core/appender/rolling/CronTriggeringPolicy.java     | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 b0297077e3..3ee8bdc469 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
@@ -146,7 +146,9 @@ public final class CronTriggeringPolicy extends AbstractTriggeringPolicy {
     }
 
     private void rollover() {
-    	manager.rollover(cronExpression.getPrevFireTime(new Date()), lastRollDate);
+        // If possible, use the time rollover was supposed to occur, not the actual time.
+        Date rollTime = future != null ? future.getFireTime() : new Date();
+        manager.rollover(cronExpression.getPrevFireTime(rollTime), lastRollDate);
         if (future != null) {
             lastRollDate = future.getFireTime();
         }