[
https://issues.apache.org/jira/browse/LOG4J2-1978?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Russ updated LOG4J2-1978:
-------------------------
Description:
Rolled dated log files have the wrong date, in relation to the enclosed dated
log entries.
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>
<!-- either of the following 2 variations in declaration of the RollingFile
have the same issue -->
<!-- RollingFile name="file-log" fileName="base.log"
filePattern="${FilePattern}" -->
<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>
Also note:
was:
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>
> 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
>
> Rolled dated log files have the wrong date, in relation to the enclosed dated
> log entries.
> 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>
> <!-- either of the following 2 variations in declaration of the
> RollingFile have the same issue -->
> <!-- RollingFile name="file-log" fileName="base.log"
> filePattern="${FilePattern}" -->
> <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>
> Also note:
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)