Russ created LOG4J2-1978:
----------------------------

             Summary: Dated rolling files are incorrectly labeled with the 
date/time segment of the future iteration
                 Key: LOG4J2-1978
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1978
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.8.2
            Reporter: Russ


Referencing feature LOG4J2-1101 .. which was added in version 2.8.

Using the following example of a "daily rolling file" ... 
* FilePattern: App_%d{yyyy-MM-dd}.log
* log entries for the date: (ie.) 2017-12-01 (note: the day is the 1st)
* are logged in base file named: (ie.) App_2017-12-01.log (note: the day is the 
1st)
* When rolled at midnight .. (now) 2017/12/02 (note: the day is now the 2nd)
* Log entries of 2017-12-01 are now stored in a file name App_2017-12-02.log 
(note: the day on the file is the 2nd)

This occurs similarly at any level of granularity, of the date/time iteration. 
For instance.. 
* with a FilePattern (focusing on the date pattern specifically) of: 
%d{yyyy-MM-dd_HH-mm}
* log entries for: 2017-12-01_08-30
* will be in the rolled file: 2017-12-01_08-31

Additionally, this flaw affects the first roll over iteration, where the first 
iteration doesn't roll (on the first midnight), but does roll on subsequent 
iterations. For instance..
* with a FilePattern (focusing on the date pattern specifically) of: 
%d{yyyy-MM-dd}
* log entries for: 2017-12-01 (the app start date)
* the roll does not occur at midnight.. which is now: 2017-12-02

This results in the log file dated for the 1st, having entries for both the 1st 
and 2nd
* then on the 3rd, the log rolls, resulting in a rolled log dated: 2017-12-03, 
containing entries for both the 1st and 2nd
* Moving forward .. entries for the 3rd will be rolled into a log dated 
2017-12-04 .. so on and so forth

Example log4j2.xml property file:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" monitorInterval="30">
  <Properties>
    <Property name="FilePattern">App_%d{yyyy-MM-dd}.log</Property>
    <Property name="PatternLayout">%x%X 
[%d{DEFAULT}][%-20t]%-5p(%-40.40C{3}:%-3L) - %m%n</Property>
  </Properties>

  <Appenders>
    <Console name="console-log" target="SYSTEM_OUT">
      <PatternLayout pattern="${PatternLayout}"/>
    </Console>

    <RollingFile name="file-log" filePattern="${FilePattern}" bufferedIO="true" 
immediateFlush="true">
      <PatternLayout pattern="${PatternLayout}"/>
      <Policies>
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
      </Policies>
      <DirectWriteRolloverStrategy maxFiles="10"/> <!-- maxFiles attribute does 
not appear to work - older files are not being deleted -->
    </RollingFile>
  </Appenders>

  <Loggers>
    <Root level="all">
      <AppenderRef ref="console-log"/>
      <AppenderRef ref="file-log"/>
    </Root>
  </Loggers>
</Configuration>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to