[
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)