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();
+				}
             }
         }
     }