You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Laurent Hasson (JIRA)" <ji...@apache.org> on 2017/11/28 19:43:01 UTC

[jira] [Updated] (LOG4J2-2135) Logs are not flushed when using AsyncRoot

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

Laurent Hasson updated LOG4J2-2135:
-----------------------------------
    Description: 
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>}}


  was:
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>



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