<div dir="ltr">Greetings, logback-users.<div><br></div><div>We recently switched from log4j to logback, and have observed some concerning behavior with RollingFileAppender - namely, it seems to be dropping log messages in what turns out to be a predictable manner. I'm including a simple test program that I wrote to illustrate the issue. Basically, the output of the test program indicates that the RollingFileAppender is dropping messages 16, 32, 64, 128, and so on.</div><div><br></div><div>Is this a known issue with RollingFileAppender? Is there some sort of error in our logback configuration? Any help is appreciated!</div><div><br></div><div>Regards,</div><div>Alex Hall</div><div><br></div><div>==========</div><div><br></div><div>Operating system: Ubuntu 14.04 LTS</div><div>Java version: Oracle JDK 1.8.0u72</div><div><br></div><div>Test program:</div><div><br></div><div>/lib:</div><div>  + logback-classic-1.1.7.jar</div><div>  + logback-core-1.1.7.jar</div><div>  + slf4j-api-1.7.21.jar</div><div><br></div><div>/resources/logback-test.xml:</div><div>----------</div><div><div><configuration></div><div><br></div><div>  <appender name="FILE" class="ch.qos.logback.core.FileAppender"></div><div>    <file>logs/test.log</file></div><div>    <encoder></div><div>      <pattern>%d [%thread] %-5level %logger{36} - %msg%n</pattern></div><div>    </encoder></div><div>  </appender></div><div><br></div><div>  <appender name="ROLLING-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"></div><div>    <file>logs/rolling-test.log</file></div><div>    <encoder></div><div>      <pattern>%d [%thread] %-5level %logger{36} - %msg%n</pattern></div><div>    </encoder></div><div>    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"></div><div>      <fileNamePattern>logs/rolling-test-%d{yyyy-MM-dd}.%i.log</fileNamePattern></div><div>      <timeBasedFileNamingAndTriggeringPolicy</div><div>          class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" /></div><div>      <maxHistory>30</maxHistory></div><div>      <cleanHistoryOnStart>true</cleanHistoryOnStart></div><div>    </rollingPolicy></div><div>  </appender></div><div><br></div><div>  <root level="INFO"></div><div>    <appender-ref ref="FILE" /></div><div>    <appender-ref ref="ROLLING-FILE" /></div><div>  </root></div><div><br></div><div></configuration></div></div><div>----------</div><div><br></div><div>/src/RollingAppenderTest.java:</div><div>----------</div><div><div>import org.slf4j.Logger;</div><div>import org.slf4j.LoggerFactory;</div><div><br></div><div>public class RollingAppenderTest {</div><div>   private static final Logger log = LoggerFactory.getLogger(RollingAppenderTest.class);</div><div><br></div><div>   public static void main(String[] args) throws Exception {</div><div>      if (args.length != 1) {</div><div>         System.out.println("Usage: java RollingAppenderTest <num-messages>");</div><div>         System.exit(1);</div><div>      }</div><div><br></div><div>      int nMessages = Integer.parseInt(args[0]);</div><div><br></div><div>      for (int i = 1; i <= nMessages; i++) {</div><div>         <a href="http://log.info">log.info</a>("Hello, " + i);</div><div>      }</div><div>   }</div><div>}</div></div><div>----------</div><div><br></div><div>/run-test.sh</div><div>----------</div><div><div>#!/bin/sh</div><div><br></div><div>rm -rf logs</div><div>rm -rf classes</div><div><br></div><div>echo "Compiling..."</div><div>mkdir classes</div><div>javac -cp 'lib/*' -d classes -sourcepath src src/*.java</div><div><br></div><div>echo "Running..."</div><div>java -cp 'lib/*:classes:resources' RollingAppenderTest $1</div><div><br></div><div>echo "FileAppender output lines:        $(wc -l logs/test.log)"</div><div>echo "RollingFileAppender output lines: $(wc -l logs/rolling-test.log)"</div><div>diff logs/test.log logs/rolling-test.log</div></div><div>----------</div><div><br></div><div>Test output:</div><div>----------</div><div><div>alex@alex-ubuntu14:~/src/scratch/logback-drops-messages$ ./run-test.sh 1000</div><div>Compiling...</div><div>Running...</div><div>FileAppender output lines:        1000 logs/test.log</div><div>RollingFileAppender output lines: 994 logs/rolling-test.log</div><div>16d15</div><div>< 2016-05-05 14:40:14,365 [main] INFO  RollingAppenderTest - Hello, 16</div><div>32d30</div><div>< 2016-05-05 14:40:14,366 [main] INFO  RollingAppenderTest - Hello, 32</div><div>64d61</div><div>< 2016-05-05 14:40:14,380 [main] INFO  RollingAppenderTest - Hello, 64</div><div>128d124</div><div>< 2016-05-05 14:40:14,383 [main] INFO  RollingAppenderTest - Hello, 128</div><div>256d251</div><div>< 2016-05-05 14:40:14,405 [main] INFO  RollingAppenderTest - Hello, 256</div><div>512d506</div><div>< 2016-05-05 14:40:14,439 [main] INFO  RollingAppenderTest - Hello, 512</div></div><div>----------</div></div>