[ 
https://issues.apache.org/jira/browse/LOG4J2-3339?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Miguel Valente updated LOG4J2-3339:
-----------------------------------
    Description: 
[Note: Probably affects all versions of log4j2, but 2.17, and 2.14.1 I tested]

 

Quick Description:

When using a appender with *FilePattern* but {*}without FileName{*}, then 
log4j2 eats one of the logs (the one generated on boot), then will always lag 
behind for 1 timeunit (Depending on the kind of rotation) 

 

Ex with Minutes rotation:

[First message ocurring on boot]
 # {{{color:#57d9a3}10:49:18,385{color} - Now writing to 
./logs/13/test.1049.log at 2022-01-13T10:49:18.385+0000}}
 # {{{color:#ffab00}10:50:00,007{color} Log4j2-TF-2-Scheduled-1 DEBUG Rolling 
./logs/13/test.1049.log}}
 # {{{color:#ffab00}10:50:00,016{color} Log4j2-TF-2-Scheduled-1 DEBUG 
GzCompressAction[./logs/13/test.1049.log to ./logs/13/test.1049.log.gz, 
deleteSource=true]}}
 # {{{color:#ffab00}10:50:00,019{color} Now writing to 
./logs/13/test.{color:#de350b}*1049*{color}.log at 
2022-01-13T{*}10:50:00.019+00{*}}}
 # {{{color:#4c9aff}10:51:00,001{color} Log4j2-TF-2-Scheduled-3 DEBUG Rolling 
./logs/13/test.1049.log}}
 # {{{}{color:#4c9aff}10:51:00,004{color} Log4j2-TF-2-Scheduled-3 DEBUG 
RollingFileManager executing async 
GzCompressAction[./logs/13/test.\{*}1049\{*}.log to 
./logs/13/test.\{*}1049\{*}.log.gz, 
deleteSource=true]{}}}{{{{}}{}}}{{{{}}{}}}{{{{}}{}}}

We can see that on 4. log4j2 didnt started log 1050.log but recreated 1049.log 
which will end up deleting the original boot log

 

Using one of the following configs:

Relates with report on:

[https://stackoverflow.com/questions/70695499/log4j2-seems-to-be-lagging-one-time-unit-behind]

 

Ex Configs to replicate:

properties:
{code:java}
 ### Normal log file Configuration
appender.fileRotator.type=RollingFile
appender.fileRotator.name=fileRotator
appender.fileRotator.filePattern=${sys:logs.directory}/$${date:dd}/test.%d{HHmm}.log.gz
appender.fileRotator.layout.type=PatternLayout
appender.fileRotator.layout.pattern=[%-5level] %d{HH:mm:ss.SSS yyyy-MM-dd} | 
[%t] %c{1} %L |#| %msg%n
appender.fileRotator.policies.type=CronTriggeringPolicy
appender.fileRotator.policies.schedule=0 * * ? * * *
rootLogger.appenderRef.stdout.ref=fileRotator
rootLogger.level=warn
status=debug {code}
Xml:
{code:java}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="App" packages="">
  <Appenders>
    <RollingFile name="RollingFile" 
filePattern="${sys:logs.directory}/$${date:dd}/test.%d{HHmm}.log.gz">
      <PatternLayout>
        <Pattern>%d{ISO8601} | %-5.5p | %-8.8t | %-40.40c{1} | %m%n%ex</Pattern>
      </PatternLayout>
      <Policies>
        <CronTriggeringPolicy schedule="0 0 * * * ?"/>
      </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration> {code}

  was:
[Note: Probably affects all versions of log4j2, but 2.17, and 2.14.1 I tested]

 

Quick Description:

When using a appender with *FilePattern* but {*}without FileName{*}, then 
log4j2 eats one of the logs (the one generated on boot), then will always lag 
behind for 1 timeunit (Depending on the kind of rotation) 

 

Ex with Minutes rotation:

[First message ocurring on boot]
 # {{{color:#57d9a3}10:49:18,385{color} - Now writing to 
./logs/13/test.1049.log at 2022-01-13T10:49:18.385+0000}}
 # {{{color:#ffab00}10:50:00,007{color} Log4j2-TF-2-Scheduled-1 DEBUG Rolling 
./logs/13/test.1049.log}}
 # {{{color:#ffab00}10:50:00,016{color} Log4j2-TF-2-Scheduled-1 DEBUG 
GzCompressAction[./logs/13/test.1049.log to ./logs/13/test.1049.log.gz, 
deleteSource=true]}}
 # {{{color:#ffab00}10:50:00,019{color} Now writing to 
./logs/13/test.{color:#de350b}*1049*{color}.log at 
2022-01-13T{*}10:50:00.019+00{*}}}
 # {{{color:#4c9aff}10:51:00,001{color} Log4j2-TF-2-Scheduled-3 DEBUG Rolling 
./logs/13/test.1049.log}}
 # {{{}{color:#4c9aff}10:51:00,004{color} Log4j2-TF-2-Scheduled-3 DEBUG 
RollingFileManager executing async 
GzCompressAction[./logs/13/test.{*}1049{*}.log to 
./logs/13/test.{*}1049{*}.log.gz, deleteSource=true]{}}}{{{}{}}}{{{}{}}}{{{}{}}}

We can see that on 4. log4j2 didnt started log 1050.log but recreated 1049.log 
which will end up deleting the original boot log

 

Using one of the following configs:

Relates with report on:

[https://stackoverflow.com/questions/70695499/log4j2-seems-to-be-lagging-one-time-unit-behind]

 

Ex Configs to replicate:

properties:
 * {{ ### Normal log file Configuration
appender.fileRotator.type=RollingFile}}{{appender.fileRotator.name=fileRotator}}{color:#ffab00}*{{appender.fileRotator.filePattern=${sys:logs.directory}/$${date:dd}/test.%d\{HHmm}.log.gz}}*{color}{{appender.fileRotator.layout.type=PatternLayout}}{{appender.fileRotator.layout.pattern=[%-5level]
 %d\{HH:mm:ss.SSS yyyy-MM-dd} | [%t] %c\{1} %L |#| 
%msg%n}}{{appender.fileRotator.policies.type=CronTriggeringPolicy}}{{appender.fileRotator.policies.schedule=0
 * * ? * * 
*}}{{rootLogger.appenderRef.stdout.ref=fileRotator}}{{rootLogger.level=warn}}

{{}}{{     status=debug}}

Xml:

<?xml version="1.0" encoding="UTF-8"?> 

<Configuration status="warn" name="App" packages=""> 

 <Appenders> 

 <RollingFile name="RollingFile" 
filePattern="${sys:logs.directory}/$${date:dd}/test.%d\{HHmm}.log.gz"> 

 <PatternLayout> 

 <Pattern>%d\{ISO8601} | %-5.5p | %-8.8t | %-40.40c\{1} | %m%n%ex</Pattern>  
</PatternLayout> 

 <Policies> 

 <CronTriggeringPolicy schedule="0 0 * * * ?"/> 

 </Policies> 

 </RollingFile> 

 </Appenders>

 <Loggers> 

 <Root level="info"> 

 <AppenderRef ref="RollingFile"/> 

 </Root> 

 </Loggers> 

</Configuration>


> FilePattern doesn't rotate correctly when not using a Filename
> --------------------------------------------------------------
>
>                 Key: LOG4J2-3339
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3339
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.14.1, 2.17.0
>            Reporter: Miguel Valente
>            Priority: Minor
>
> [Note: Probably affects all versions of log4j2, but 2.17, and 2.14.1 I tested]
>  
> Quick Description:
> When using a appender with *FilePattern* but {*}without FileName{*}, then 
> log4j2 eats one of the logs (the one generated on boot), then will always lag 
> behind for 1 timeunit (Depending on the kind of rotation) 
>  
> Ex with Minutes rotation:
> [First message ocurring on boot]
>  # {{{color:#57d9a3}10:49:18,385{color} - Now writing to 
> ./logs/13/test.1049.log at 2022-01-13T10:49:18.385+0000}}
>  # {{{color:#ffab00}10:50:00,007{color} Log4j2-TF-2-Scheduled-1 DEBUG Rolling 
> ./logs/13/test.1049.log}}
>  # {{{color:#ffab00}10:50:00,016{color} Log4j2-TF-2-Scheduled-1 DEBUG 
> GzCompressAction[./logs/13/test.1049.log to ./logs/13/test.1049.log.gz, 
> deleteSource=true]}}
>  # {{{color:#ffab00}10:50:00,019{color} Now writing to 
> ./logs/13/test.{color:#de350b}*1049*{color}.log at 
> 2022-01-13T{*}10:50:00.019+00{*}}}
>  # {{{color:#4c9aff}10:51:00,001{color} Log4j2-TF-2-Scheduled-3 DEBUG Rolling 
> ./logs/13/test.1049.log}}
>  # {{{}{color:#4c9aff}10:51:00,004{color} Log4j2-TF-2-Scheduled-3 DEBUG 
> RollingFileManager executing async 
> GzCompressAction[./logs/13/test.\{*}1049\{*}.log to 
> ./logs/13/test.\{*}1049\{*}.log.gz, 
> deleteSource=true]{}}}{{{{}}{}}}{{{{}}{}}}{{{{}}{}}}
> We can see that on 4. log4j2 didnt started log 1050.log but recreated 
> 1049.log which will end up deleting the original boot log
>  
> Using one of the following configs:
> Relates with report on:
> [https://stackoverflow.com/questions/70695499/log4j2-seems-to-be-lagging-one-time-unit-behind]
>  
> Ex Configs to replicate:
> properties:
> {code:java}
>  ### Normal log file Configuration
> appender.fileRotator.type=RollingFile
> appender.fileRotator.name=fileRotator
> appender.fileRotator.filePattern=${sys:logs.directory}/$${date:dd}/test.%d{HHmm}.log.gz
> appender.fileRotator.layout.type=PatternLayout
> appender.fileRotator.layout.pattern=[%-5level] %d{HH:mm:ss.SSS yyyy-MM-dd} | 
> [%t] %c{1} %L |#| %msg%n
> appender.fileRotator.policies.type=CronTriggeringPolicy
> appender.fileRotator.policies.schedule=0 * * ? * * *
> rootLogger.appenderRef.stdout.ref=fileRotator
> rootLogger.level=warn
> status=debug {code}
> Xml:
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="warn" name="App" packages="">
>   <Appenders>
>     <RollingFile name="RollingFile" 
> filePattern="${sys:logs.directory}/$${date:dd}/test.%d{HHmm}.log.gz">
>       <PatternLayout>
>         <Pattern>%d{ISO8601} | %-5.5p | %-8.8t | %-40.40c{1} | 
> %m%n%ex</Pattern>
>       </PatternLayout>
>       <Policies>
>         <CronTriggeringPolicy schedule="0 0 * * * ?"/>
>       </Policies>
>     </RollingFile>
>   </Appenders>
>   <Loggers>
>     <Root level="info">
>       <AppenderRef ref="RollingFile"/>
>     </Root>
>   </Loggers>
> </Configuration> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to