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

Ralph Goers reassigned LOG4J2-2733:
-----------------------------------

    Assignee: Ralph Goers

> the initial logs were flushed away while file rolling at the second time
> ------------------------------------------------------------------------
>
>                 Key: LOG4J2-2733
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2733
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.12.1
>         Environment: Linux RHEL 6 
> oracle jdk 1.8.0_151l64
> Linux login session's timezone: EST 
> slf4j api 1.7.9
>            Reporter: ma jun
>            Assignee: Ralph Goers
>            Priority: Blocker
>         Attachments: Main.java, log4j2_utc_test.xml
>
>
> observed a bug that the initial logs were flushed away while file rolling at 
> the second time. if jvm is set a timezone which is different the log config's 
> timezone, the issue happens and the log file will be rolling at different 
> time points between the first day and the next days. 
> please see below details
> 1.  in java code the default timezone was set to UTC (project requirement). 
> see below testing code piece . 
> {code:java}
> static final Logger log = LoggerFactory.getLogger(Main.class);
>       
>       public static void main(String[] args) {
>               java.util.TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
>               log.info("set timezone to UTC");
>               while (true) {
>                       log.info("echo current timing-------------{}", 
> System.currentTimeMillis());
>                       try {
>                               Thread.sleep(3 * 60 * 1000);
>                       } catch (InterruptedException e) {
>                               Thread.currentThread().interrupt();
>                       }
>               }
>       }
> {code}
> 2.  and in log4j2 configuration , the time zone was still configured to 
> America/New_York. see below configs.
> {noformat}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="INFO" strict="true">
>       <Appenders>
>               
>               <RollingFile name="fileout" 
> fileName="${sys:logDir}/log4j_rolling_test_utc.log"
>                       
> filePattern="${sys:logDir}/log4j_rolling_test_utc.log.%d{yyyyMMdd}{America/New_York}">
>                       <PatternLayout pattern="%d{yy-MM-dd 
> HH:mm:ss.SSS}{America/New_York} [%-5level] %t %c{1.}:%L - %msg%n" />
>                       <Policies>
>                               <TimeBasedTriggeringPolicy interval="1"/>
>                       </Policies>
>               </RollingFile>          
>       </Appenders>
>       <Loggers>
>               <Root level="${sys:logLevel}">                  
>                       <AppenderRef ref="fileout" />
>               </Root>         
>       </Loggers>      
> </Configuration>
> {noformat}
> 3. java cmd -- 
> /opt/jdk/1.8.0_151l64/bin/java 
> -Dlog4j.configurationFile=/var/tmp/log4j2test/log4j2_utc_test.xml 
> -DlogLevel=info -DlogDir=/var/tmp/log4j2test -jar 
> /var/tmp/log4j2test/log4j2rolling_UTC.jar &
> and the linux session was in timezone EST
> 4. observed issue
> #1. the first day the logs were looking good. and the file rolling was also 
> good for the first time
> 19-12-05 04:54:27.373 [INFO ] main l.Main:12 - echo current 
> timing-------------1575539667366
> 19-12-05 04:57:27.378 [INFO ] main l.Main:12 - echo current 
> timing-------------1575539847378
> 19-12-05 05:00:27.378 [INFO ] main l.Main:12 - echo current 
> timing-------------1575540027378
> it generated a log file log4j_rolling_test_utc.log.20191205 with above logs. 
> and meanwhile 
> log4j_rolling_test_utc.log was still there to receive the new logs. and it 
> was rolling at EST time midnight, that's what i expected.
> #2. when the next day time moved to *UTC* midnight (EST time 19:00), file 
> rolling happened which was not expected.  the initial logs(at timing 19-12-05 
> 04:54 EST) in log4j_rolling_test_utc.log.20191205 were flushed away.   
> actually all the logs before 19-12-06 EST were flushed away. 
> bash-4.1$ head log4j_rolling_test_utc.log.20191205
> 19-12-06 00:00:34.271 [INFO ] main l.Main:16 - echo current 
> timing-------------1575608434270
> 19-12-06 00:03:34.277 [INFO ] main l.Main:16 - echo current 
> timing-------------1575608614277
> 19-12-06 00:06:34.278 [INFO ] main l.Main:16 - echo current 
> timing-------------1575608794277
> 19-12-06 00:09:34.278 [INFO ] main l.Main:16 - echo current 
> timing-------------1575608974278
> Please let me know if you need more details. 



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

Reply via email to