
Hello, using the following programmatic configuration there seems to be a problem with how the maxHistory argument is implemented. I roll over multiple times withing the time interval (every minute here), creating the following files : (maxHistory = 3) trace.log (active file) trace-2013-03-13-16.14.0.log.zip trace-2013-03-13-16.13.0.log.zip trace-2013-03-13-16.12.2.log.zip trace-2013-03-13-16.12.1.log.zip trace-2013-03-13-16.12.0.log.zip The nex time rollover occurs, the 16.13.0.log.zip file is removed, and not the oldest ones (12.{1,2,3} as I would have expected. Is this intended behaviour ? Or is it a problem with my configuration ? public static Logger createTimeAndSizeRollingLogger(String fileBase, String maxSize, int maxHistory, String resolutionPattern) { LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<ILoggingEvent>(); appender.setContext(loggerContext); appender.setFile(fileBase + ".log"); TimeBasedRollingPolicy<ILoggingEvent> timePolicy = new TimeBasedRollingPolicy<ILoggingEvent>(); timePolicy.setFileNamePattern(fileBase + "_%d{" + resolutionPattern + "}-%i.log.zip"); timePolicy.setContext(loggerContext); timePolicy.setMaxHistory(maxHistory); timePolicy.setParent(appender); appender.setRollingPolicy(timePolicy); SizeAndTimeBasedFNATP<ILoggingEvent> rollingPolicy = new SizeAndTimeBasedFNATP<ILoggingEvent>(); rollingPolicy.setMaxFileSize(maxSize); rollingPolicy.setTimeBasedRollingPolicy(timePolicy); rollingPolicy.setContext(loggerContext); timePolicy.setTimeBasedFileNamingAndTriggeringPolicy(rollingPolicy); timePolicy.start(); rollingPolicy.start(); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(loggerContext); encoder.setPattern("%msg%n"); encoder.start(); appender.setEncoder(encoder); appender.start(); Logger logger = loggerContext.getLogger(fileBase); logger.setLevel(Level.TRACE); logger.addAppender(appender); StatusPrinter.print(loggerContext); return logger; }