Laurent Hasson created LOG4J2-2135:
--------------------------------------

             Summary: Logs are not flushed when using AsyncRoot
                 Key: LOG4J2-2135
                 URL: https://issues.apache.org/jira/browse/LOG4J2-2135
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.9.1
         Environment: *+Libraries+*:
* java 1.8.151
* log4j-api-2.9.1.jar
* log4j-core-2.9.1.jar
* log4j-web-2.9.1.jar
* disruptor-3.3.6.jar


*+Configuration file+*:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
        <Appenders>
                <Console name="Console" target="SYSTEM_OUT" >
                        <PatternLayout>
                                        <pattern>%d{MMdd.HHmmss.SSS}#%-3t 
%level{length=1} %15.15c{1}|  %m%ex{20}%n</pattern>
                        </PatternLayout>
                        </Console>
        </Appenders>
        <Loggers>
                <AsyncRoot level="debug">
                                <AppenderRef ref="Console" />
                </AsyncRoot>
        </Loggers>
</Configuration>


            Reporter: Laurent Hasson


With the following code, by the time the program ends, a number of logs are 
missing in the output. They may be either lost or not flushed?

public class Log4JTest
  {
    protected static final Logger Log = 
LogManager.getLogger(Log4JTest.class.getName());
    protected static final int MAX = 10;
    public static void main(String[] args)
      {
        for (int i = 0; i < MAX; ++i)
          {
            for (int j = 0; j < MAX; ++j)
              {
                Log.fatal("Fatal i=" + i + "; j=" + j + ";");
                Log.error("Error i=" + i + "; j=" + j + ";");
                Log.warn("Warn   i=" + i + "; j=" + j + ";");
                Log.info("Info   i=" + i + "; j=" + j + ";");
                Log.debug("Debug i=" + i + "; j=" + j + ";");
                Log.trace("Trace i=" + i + "; j=" + j + ";");
              }
          }
        Log.info("DONE.");
      }
  }

I'd expect the program to end and all log messages to be output properly, 
ending with the "DONE" message.

If i change the config file to a rolling appender, i can observe the same 
behavior, i.e., missing messages.

                <RollingFile name="FILES" fileName="${log-path}/aaa.log" 
filePattern="${log-path}/aaa.%i.log.gz">
                        <PatternLayout>
                <pattern>%d{MMdd.HHmmss.SSS}#%-3t %level{length=1} %15.15c{1}|  
%m%ex{20}%n</pattern>
                        </PatternLayout>
                        <Policies>
                                <SizeBasedTriggeringPolicy size="100 MB" />
                        </Policies>
                        <DefaultRolloverStrategy max="99999" 
compressionLevel="6"/>
                </RollingFile>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to