[ https://issues.apache.org/jira/browse/LOG4J2-520?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13988948#comment-13988948 ]
Remko Popma commented on LOG4J2-520: ------------------------------------ Andre, I've started to look at this issue again. With your AppenderOverwhelmer program, and the log4j2.xml file attached to this issue, I can reproduce the issue. So far, I've found that the application thread does wait correctly until there are no more log events in the ringbuffer. Only after the ringbuffer is empty does the program go ahead and shut down the disruptor. Interestingly, even though the queue is empty, the ConsoleAppender only prints out 730,000-740,000 events (out of 1,000,000) before the application exits. I added a counter to this appender and this counter confirms not all events have reached the appender. What I don't understand yet is why the ringbuffer reports it is empty: this should not happen unless all events have been consumed... What is also interesting is that I cannot reproduce the problem with a RandomAccessFileAppender. If I replace the ConsoleAppender with a RandomAccessFileAppender and run the ApplicationOverwhelmer the resulting log file has all 1,000,000 events without dropping a single event. I need to look at this some more. > RollingRandomAccessFile with Async Appender skip logs > ----------------------------------------------------- > > Key: LOG4J2-520 > URL: https://issues.apache.org/jira/browse/LOG4J2-520 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders > Affects Versions: 2.0-beta9, 2.0-rc1 > Environment: JDK 1.6, Eclipse > Reporter: JavaTech > Assignee: Remko Popma > Attachments: log4j2.xml > > > 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 > {code: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> > {code} > Sample Java Code > {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"); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org