[ 
https://issues.apache.org/jira/browse/LOG4J2-1906?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16702428#comment-16702428
 ] 

Gary Gregory commented on LOG4J2-1906:
--------------------------------------

The 2nd go around for the fix is a no-go since it depends on Java 8's 
{{java.time}}. FWIW, I'm fine with requiring Java 8 for the next 2.x release.

> DirectWriteRolloverStrategy not properly creating files
> -------------------------------------------------------
>
>                 Key: LOG4J2-1906
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1906
>             Project: Log4j 2
>          Issue Type: Bug
>    Affects Versions: 2.8.2
>            Reporter: João Santos
>            Assignee: Ralph Goers
>            Priority: Major
>             Fix For: 3.0.0, 2.11.2
>
>
> The DirectWriteRolloverStrategy is not properly determining the filename of 
> the new log file after the rollover happens.
> With the following configuration:
> {noformat}
>         <RollingFile name="ApplicationLog" 
> filePattern="application.log.%d{yyyy-MM-dd-HH-mm}">
>             <PatternLayout>
>                 <Pattern>%m%n</Pattern>
>             </PatternLayout>
>             <Policies>
>                 <TimeBasedTriggeringPolicy />
>                 <SizeBasedTriggeringPolicy />
>             </Policies>
>             <DirectWriteRolloverStrategy />
>         </RollingFile>
> {noformat}
> What is happening is, for instance:
>  - application starts at 09h35m30s
>  - at instant 09h35m55s a new log is written the rollover is set to happen at 
> 09h36m00s, log line is written to application.log.2017-05-10-09-35 - OK
>  - at instant 09h36m05s a new log is written and the rollover is triggered, 
> after the rollover logs are written to application.log.2017-05-10-09-35 - Not 
> OK
>  - at instant 09h37m05s a new log is written and the rollover is triggered, 
> after the rollover logs are written to application.log.2017-05-10-09-36 - Not 
> OK
> This seems to be happening because 
> DirectWriteRolloverStrategy.getCurrentFileName (when being called from 
> createFileAfterRollover) is calling the PatternProcessor.formatFileName and 
> telling it to use the currentTime. However, currentFileTime is zero, and it 
> will fallback to the prevFileTime to determine the filename, which is wrong 
> as it will be one minute before current time.
> It should probably either use the nextFileTime (while debugging I could see 
> that it was set to the correct time, the minute I expect the file to 
> rollover), or use the System time.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to