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 2019/01/30 04:57:03 UTC
[logging-log4j2] branch master updated: LOG4J2-1906 - Delay file
name resolution closer to when the stream is opened
This is an automated email from the ASF dual-hosted git repository.
rgoers pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/master by this push:
new 849e658 LOG4J2-1906 - Delay file name resolution closer to when the stream is opened
849e658 is described below
commit 849e65851ab6e4890d23e82db98b80c5c9f5446f
Author: Ralph Goers <rg...@apache.org>
AuthorDate: Tue Jan 29 21:56:45 2019 -0700
LOG4J2-1906 - Delay file name resolution closer to when the stream is opened
---
log4j-core/revapi.json | 5 +++++
.../log4j/core/appender/rolling/CompositeTriggeringPolicy.java | 1 +
.../log4j/core/appender/rolling/DirectFileRolloverStrategy.java | 2 ++
.../log4j/core/appender/rolling/DirectWriteRolloverStrategy.java | 5 +++++
.../apache/logging/log4j/core/appender/rolling/PatternProcessor.java | 4 +++-
.../logging/log4j/core/appender/rolling/RollingFileManager.java | 4 +++-
6 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/log4j-core/revapi.json b/log4j-core/revapi.json
index 84e7c22..da87ca0 100644
--- a/log4j-core/revapi.json
+++ b/log4j-core/revapi.json
@@ -1988,6 +1988,11 @@
"old": "class org.apache.logging.log4j.core.util.datetime.Format",
"justification": "Removed deprecated code"
+ },
+ {
+ "code": "java.method.addedToInterface",
+ "new": "method void org.apache.logging.log4j.core.appender.rolling.DirectFileRolloverStrategy::clearCurrentFileName()",
+ "justification": "Required to reset file name so it can be calculated at the appropriate time"
}
]
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy.java
index 5528ce9..b63bca0 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CompositeTriggeringPolicy.java
@@ -50,6 +50,7 @@ public final class CompositeTriggeringPolicy extends AbstractTriggeringPolicy {
@Override
public void initialize(final RollingFileManager manager) {
for (final TriggeringPolicy triggeringPolicy : triggeringPolicies) {
+ LOGGER.debug("Initializing triggering policy {}", triggeringPolicy.toString());
triggeringPolicy.initialize(manager);
}
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectFileRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectFileRolloverStrategy.java
index 4d27f8d..3daeee3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectFileRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectFileRolloverStrategy.java
@@ -22,4 +22,6 @@ package org.apache.logging.log4j.core.appender.rolling;
public interface DirectFileRolloverStrategy {
String getCurrentFileName(final RollingFileManager manager);
+
+ void clearCurrentFileName();
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
index 63e2ca8..0800593 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DirectWriteRolloverStrategy.java
@@ -277,6 +277,11 @@ public class DirectWriteRolloverStrategy extends AbstractRolloverStrategy implem
return currentFileName;
}
+ @Override
+ public void clearCurrentFileName() {
+ currentFileName = null;
+ }
+
/**
* Performs the rollover.
*
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 b5a5aa3..8a912f8 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
@@ -266,7 +266,9 @@ public class PatternProcessor {
final Object obj) {
// LOG4J2-628: we deliberately use System time, not the log4j.Clock time
// for creating the file name of rolled-over files.
- final long time = useCurrentTime && currentFileTime != 0 ? currentFileTime :
+ LOGGER.debug("Formatting file name. useCurrentTime={}, currentFileTime={}, prevFileTime={}",
+ useCurrentTime, currentFileTime, prevFileTime);
+ final long time = useCurrentTime ? currentFileTime != 0 ? currentFileTime : System.currentTimeMillis() :
prevFileTime != 0 ? prevFileTime : System.currentTimeMillis();
formatFileName(buf, new Date(time), obj);
final LogEvent event = new Log4jLogEvent.Builder().setTimeMillis(time).build();
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 465ebfc..daf52c9 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -119,7 +119,9 @@ public class RollingFileManager extends FileManager {
File file = new File(getFileName());
if (file.exists()) {
size = file.length();
- }
+ } else {
+ ((DirectFileRolloverStrategy) rolloverStrategy).clearCurrentFileName();
+ }
}
}
}