Uploaded image for project: 'Log4j 2'
  1. Log4j 2
  2. LOG4J2-520

RollingRandomAccessFile with Async Appender skip logs

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0-beta9, 2.0-rc1
    • Fix Version/s: 2.0-rc2
    • Component/s: Appenders
    • Labels:
      None
    • Environment:

      JDK 1.6, Eclipse

      Description

      I have written a sample code which will write DEBUG, INFO , WARN logs in a single flile, I have written a logs in FOR loop printing numbers from 1 to 99.
      sometime it print numbers incomplete sequence, like 1 to 67, 1 to 89 etc.

      log4j2.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration>
        <Appenders>
          <RollingRandomAccessFile name="RollingRandomAccessFile"
            fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log"
            immediateFlush="false" append="true" ignoreExceptions="false">
            <PatternLayout>
              <Pattern>%d %-5p [%t] (%F:%L) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
              <TimeBasedTriggeringPolicy />
              <SizeBasedTriggeringPolicy size="100KB"/>
            </Policies>
          </RollingRandomAccessFile>
          <Async name="ASYNC" includeLocation="true">
            <AppenderRef ref="RollingRandomAccessFile" />
          </Async>
        </Appenders>
        <Loggers>
          <Root level="debug" includeLocation="true">
            <AppenderRef ref="ASYNC" />
          </Root>
        </Loggers>
      </Configuration>
      

      Sample Java Code

      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      
      public class LoggerUtil {
      	public static Logger logger = LoggerFactory.getLogger(LoggerUtil.class);
      	public static void main(String[] args) {
      		System.out.println("start");
      		logger.debug("debug log");
      		logger.info("info log");
      		logger.error("error log");
      		for(int i = 0; i < 99; i++) {
      			logger.warn("{}",i);
      			System.out.println("I : - " + i);
      		}
      		logger.error("finish printing logs");
      		System.out.println("end");		
      	}
      }
      

        Attachments

        1. log4j2.xml
          0.3 kB
          Andre Bogus

          Issue Links

            Activity

              People

              • Assignee:
                remkop@yahoo.com Remko Popma
                Reporter:
                Java JavaTech
              • Votes:
                2 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: