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
The following commit(s) were added to refs/heads/release-2.x by this push:
new 42fe68e LOG4J2-2542 - CronTriggeringPolicy was not rolling properly,
especially when used with the SizeBasedTriggeringPolicy
42fe68e is described below
commit 42fe68e4394c6fe335f15f9b7320aed83cc0142d
Author: Ralph Goers
AuthorDate: Fri Feb 1 23:44:23 2019 -0700
LOG4J2-2542 - CronTriggeringPolicy was not rolling properly, especially
when used with the SizeBasedTriggeringPolicy
---
.../appender/rolling/CronTriggeringPolicy.java | 5 +-
.../appender/rolling/DefaultRolloverStrategy.java | 6 +-
.../core/appender/rolling/PatternProcessor.java| 4 +-
.../core/appender/rolling/RollingFileManager.java | 7 ++
...st.java => RollingAppenderCronAndSizeTest.java} | 79 +++---
.../rolling/RollingAppenderTimeAndSizeTest.java| 45 +---
...olling3.xml => log4j-rolling-cron-and-size.xml} | 25 ---
log4j-core/src/test/resources/log4j-rolling3.xml | 8 +--
src/site/xdoc/manual/appenders.xml | 10 ++-
9 files changed, 131 insertions(+), 58 deletions(-)
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 060e7fa..14997e1 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
@@ -145,10 +145,7 @@ public final class CronTriggeringPolicy extends
AbstractTriggeringPolicy {
}
private void rollover() {
-manager.getPatternProcessor().setPrevFileTime(lastRollDate.getTime());
-final Date thisRoll = cronExpression.getPrevFireTime(new Date());
-manager.getPatternProcessor().setCurrentFileTime(thisRoll.getTime());
-manager.rollover();
+ manager.rollover(cronExpression.getPrevFireTime(new Date()),
lastRollDate);
if (future != null) {
lastRollDate = future.getFireTime();
}
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index 335018e..6dff555 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -517,9 +517,11 @@ public class DefaultRolloverStrategy extends
AbstractRolloverStrategy {
@Override
public RolloverDescription rollover(final RollingFileManager manager)
throws SecurityException {
int fileIndex;
+ final StringBuilder buf = new StringBuilder(255);
if (minIndex == Integer.MIN_VALUE) {
final SortedMap eligibleFiles =
getEligibleFiles(manager);
fileIndex = eligibleFiles.size() > 0 ? eligibleFiles.lastKey() + 1
: 1;
+
manager.getPatternProcessor().formatFileName(strSubstitutor, buf, fileIndex);
} else {
if (maxIndex < 0) {
return null;
@@ -529,13 +531,13 @@ public class DefaultRolloverStrategy extends
AbstractRolloverStrategy {
if (fileIndex < 0) {
return null;
}
+
manager.getPatternProcessor().formatFileName(strSubstitutor, buf, fileIndex);
if (LOGGER.isTraceEnabled()) {
final double durationMillis =
TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startNanos);
LOGGER.trace("DefaultRolloverStrategy.purge() took {}
milliseconds", durationMillis);
}
}
-final StringBuilder buf = new StringBuilder(255);
-manager.getPatternProcessor().formatFileName(strSubstitutor, buf,
fileIndex);
+
final String currentFileName = manager.getFileName();
String renameTo = buf.toString();
diff --git
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
index f1231fd..6d1fb7e 100644
---
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
+++
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
@@ -213,7 +213,9 @@ public class PatternProcessor {
}
public void updateTime() {
-prevFileTime = nextFileTime;
+ if (nextFileTime != 0) {
+ prevFileTime = nextFileTime;
+ }
}
private long