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 6996fb0  LOG4J2-2610 - Explicitly set file creation time
6996fb0 is described below

commit 6996fb0433bec6f4e5fd528159a63a7c04d4fb7f
Author: Ralph Goers <[email protected]>
AuthorDate: Sun Jun 2 14:05:34 2019 -0600

    LOG4J2-2610 - Explicitly set file creation time
---
 .../org/apache/logging/log4j/core/appender/FileManager.java  | 11 ++++++++++-
 .../appender/rolling/RollingAppenderTimeAndSizeTest.java     | 12 +++++++++---
 log4j-core/src/test/resources/log4j-rolling3.xml             |  1 +
 src/changes/changes.xml                                      |  3 +++
 4 files changed, 23 insertions(+), 4 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
index 0906534..3596673 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/FileManager.java
@@ -25,9 +25,11 @@ import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
 import java.nio.file.FileSystems;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.attribute.FileOwnerAttributeView;
+import java.nio.file.attribute.FileTime;
 import java.nio.file.attribute.PosixFileAttributeView;
 import java.nio.file.attribute.PosixFilePermission;
 import java.nio.file.attribute.PosixFilePermissions;
@@ -185,7 +187,14 @@ public class FileManager extends OutputStreamManager {
     protected OutputStream createOutputStream() throws IOException {
         final String filename = getFileName();
         LOGGER.debug("Now writing to {} at {}", filename, new Date());
-        final FileOutputStream fos = new FileOutputStream(filename, isAppend);
+        final File file = new File(filename);
+        final FileOutputStream fos = new FileOutputStream(file, isAppend);
+        try {
+            FileTime now = FileTime.fromMillis(System.currentTimeMillis());
+            Files.setAttribute(file.toPath(), "creationTime", now);
+        } catch (Exception ex) {
+            LOGGER.warn("Unable to set current file tiem for {}", filename);
+        }
         defineAttributeView(Paths.get(filename));
         return fos;
     }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderTimeAndSizeTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderTimeAndSizeTest.java
index a94300b..bac1b1e 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderTimeAndSizeTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/RollingAppenderTimeAndSizeTest.java
@@ -22,10 +22,13 @@ import static org.hamcrest.Matchers.endsWith;
 import static org.hamcrest.Matchers.hasItemInArray;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.attribute.FileTime;
 import java.util.Arrays;
 import java.util.Random;
 
@@ -60,8 +63,11 @@ public class RollingAppenderTimeAndSizeTest {
     @Test
     public void testAppender() throws Exception {
                Random rand = new Random();
+               final File logFile = new 
File("target/rolling3/rollingtest.log");
+               assertTrue("target/rolling3/rollingtest.log does not exist", 
logFile.exists());
+               FileTime time = (FileTime) Files.getAttribute(logFile.toPath(), 
"creationTime");
                for (int j=0; j < 100; ++j) {
-                       int count = rand.nextInt(100);
+                       int count = rand.nextInt(50);
                        for (int i = 0; i < count; ++i) {
                                logger.debug("This is test message number " + 
i);
                        }
@@ -89,8 +95,8 @@ public class RollingAppenderTimeAndSizeTest {
                        previous = fileParts[1];
                        assertEquals("Incorrect file name. Expected counter 
value of " + fileCounter + " in " + actual,
                                Integer.toString(fileCounter), fileParts[2]);
-
-
                }
+               FileTime endTime = (FileTime) 
Files.getAttribute(logFile.toPath(), "creationTime");
+               assertNotEquals("Creation times are equal", time, endTime);
     }
 }
diff --git a/log4j-core/src/test/resources/log4j-rolling3.xml 
b/log4j-core/src/test/resources/log4j-rolling3.xml
index a2c1310..56f6058 100644
--- a/log4j-core/src/test/resources/log4j-rolling3.xml
+++ b/log4j-core/src/test/resources/log4j-rolling3.xml
@@ -32,6 +32,7 @@
         <TimeBasedTriggeringPolicy />
         <SizeBasedTriggeringPolicy size="500" />
       </Policies>
+      <DefaultRolloverStrategy max="9"/>
     </RollingFile>
     <List name="List">
       <ThresholdFilter level="error"/>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2c042d7..fa9b13f 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -30,6 +30,9 @@
          - "remove" - Removed
     -->
     <release version="2.12.0" date="2019-MM-DD" description="GA Release 
2.12.0">
+      <action issue="LOG4J2-2610" dev="rgoers" type="fix">
+        Explicitly set file creation time.
+      </action>
       <action issue="LOG4J2-2561" dev="rgoers" type="fix" due-to="Ulrich 
Enslin">
         JEP223 version detection fix for JDK 9 and up.
       </action>

Reply via email to