@Test public void testGetNextTimeMonthlyReturnsFirstDayOfNextYear() { final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz"); final Calendar initial = Calendar.getInstance(); initial.set(2015, Calendar.DECEMBER, 28, 0, 0, 0); final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false); // We expect 1st day of next month final Calendar expected = Calendar.getInstance(); expected.set(2016, Calendar.JANUARY, 1, 00, 00, 00); expected.set(Calendar.MILLISECOND, 0); assertEquals(format(expected.getTimeInMillis()), format(actual)); }
@Test public void testDontInterpretBackslashAsEscape() { final PatternProcessor pp = new PatternProcessor("c:\\test\\new/app-%d{HH-mm-ss}.log"); final Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 16); cal.set(Calendar.MINUTE, 02); cal.set(Calendar.SECOND, 15); final StringBuilder buf = new StringBuilder(); pp.formatFileName(buf, cal.getTime(), 23); assertEquals("c:\\test\\new/app-16-02-15.log", buf.toString()); }
/** * Get the new log file name. */ @Override public String getCurrentFileName(RollingFileManager rollingFileManager) { String pattern = rollingFileManager.getPatternProcessor().getPattern(); return getLogFileName(pattern); }
@Deprecated protected RollingFileManager(final String fileName, final String pattern, final OutputStream os, final boolean append, final long size, final long time, final TriggeringPolicy triggeringPolicy, final RolloverStrategy rolloverStrategy, final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer buffer) { super(fileName, os, append, false, advertiseURI, layout, writeHeader, buffer); this.size = size; this.initialTime = time; this.triggeringPolicy = triggeringPolicy; this.rolloverStrategy = rolloverStrategy; this.patternProcessor = new PatternProcessor(pattern); this.patternProcessor.setPrevFileTime(time); this.fileName = fileName; this.fileExtension = FileExtension.lookupForFile(pattern); }
manager.getPatternProcessor().formatFileName(subst, buf, fileIndex); final String currentFileName = manager.getFileName();
protected PatternProcessor createPatternProcessor(String pattern) { return new PatternProcessor("%d{" + pattern + "}"); }
protected RollingIndexNameFormatter(String indexName, String pattern, long initTimeInMillis, TimeZone timeZone) { this.indexName = indexName; this.fastDateFormat = FastDateFormat.getInstance(pattern, timeZone); this.patternProcessor = createPatternProcessor(pattern); this.currentName = doFormat(indexName, initTimeInMillis); long previousTime = this.patternProcessor.getNextTime(initTimeInMillis, -1, false); this.patternProcessor.setPrevFileTime(previousTime); this.nextRolloverTime = this.patternProcessor.getNextTime(initTimeInMillis, 0, false); this.currentFileTime = this.nextRolloverTime; }
private void rollover(String indexName, long eventTimeInMillis) { nextRolloverTime = patternProcessor.getNextTime(eventTimeInMillis, 1, false); currentFileTime = patternProcessor.getNextTime(eventTimeInMillis, 0, false); currentName = doFormat(indexName, eventTimeInMillis); }
protected SortedMap<Integer, Path> getEligibleFiles(final RollingFileManager manager, final boolean isAscending) { final StringBuilder buf = new StringBuilder(); final String pattern = manager.getPatternProcessor().getPattern(); manager.getPatternProcessor().formatFileName(strSubstitutor, buf, NotANumber.NAN); return getEligibleFiles(buf.toString(), pattern, isAscending); }
private void rollover() { manager.getPatternProcessor().setPrevFileTime(lastRollDate.getTime()); final Date thisRoll = cronExpression.getPrevFireTime(new Date()); manager.getPatternProcessor().setCurrentFileTime(thisRoll.getTime()); manager.rollover(); if (future != null) { lastRollDate = future.getFireTime(); } }
/** * Constructor. * @param pattern The file pattern. */ public PatternProcessor(final String pattern) { this.pattern = pattern; final PatternParser parser = createPatternParser(); final List<PatternConverter> converters = new ArrayList<>(); final List<FormattingInfo> fields = new ArrayList<>(); parser.parse(pattern, converters, fields, false, false, false); final FormattingInfo[] infoArray = new FormattingInfo[fields.size()]; patternFields = fields.toArray(infoArray); final ArrayPatternConverter[] converterArray = new ArrayPatternConverter[converters.size()]; patternConverters = converters.toArray(converterArray); for (final ArrayPatternConverter converter : patternConverters) { if (converter instanceof DatePatternConverter) { final DatePatternConverter dateConverter = (DatePatternConverter) converter; frequency = calculateFrequency(dateConverter.getPattern()); } } }
@Deprecated protected RollingFileManager(final LoggerContext loggerContext, final String fileName, final String pattern, final OutputStream os, final boolean append, final boolean createOnDemand, final long size, final long time, final TriggeringPolicy triggeringPolicy, final RolloverStrategy rolloverStrategy, final String advertiseURI, final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer buffer) { super(loggerContext, fileName, os, append, false, createOnDemand, advertiseURI, layout, writeHeader, buffer); this.size = size; this.initialTime = time; this.triggeringPolicy = triggeringPolicy; this.rolloverStrategy = rolloverStrategy; this.patternProcessor = new PatternProcessor(pattern); this.patternProcessor.setPrevFileTime(time); this.fileName = fileName; this.fileExtension = FileExtension.lookupForFile(pattern); }
manager.getPatternProcessor().formatFileName(subst, buf, highIndex); manager.getPatternProcessor().formatFileName(subst, buf, i - 1); buf.setLength(0); manager.getPatternProcessor().formatFileName(subst, buf, i - 1);
protected PatternProcessor createPatternProcessor(String pattern) { return new PatternProcessor("%d{" + pattern + "}"); }
protected RollingIndexNameFormatter(String indexName, String pattern, long initTimeInMillis, TimeZone timeZone) { this.indexName = indexName; this.fastDateFormat = FastDateFormat.getInstance(pattern, timeZone); this.patternProcessor = createPatternProcessor(pattern); this.currentName = doFormat(indexName, initTimeInMillis); long previousTime = this.patternProcessor.getNextTime(initTimeInMillis, -1, false); this.patternProcessor.setPrevFileTime(previousTime); this.nextRolloverTime = this.patternProcessor.getNextTime(initTimeInMillis, 0, false); this.currentFileTime = this.nextRolloverTime; }
private void rollover(String indexName, long eventTimeInMillis) { nextRolloverTime = patternProcessor.getNextTime(eventTimeInMillis, 1, false); currentFileTime = patternProcessor.getNextTime(eventTimeInMillis, 0, false); currentName = doFormat(indexName, eventTimeInMillis); }
final Date lastRollForFile = cronExpression.getPrevFireTime(new Date(this.manager.getFileTime())); final Date lastRegularRoll = cronExpression.getPrevFireTime(new Date()); aManager.getPatternProcessor().setCurrentFileTime(lastRegularRoll.getTime()); LOGGER.debug("LastRollForFile {}, LastRegularRole {}", lastRollForFile, lastRegularRoll); aManager.getPatternProcessor().setPrevFileTime(lastRegularRoll.getTime()); if (checkOnStartup && lastRollForFile != null && lastRegularRoll != null && lastRollForFile.before(lastRegularRoll)) {
@Test public void testGetNextTimeHourlyReturnsFirstMinuteOfNextHour() { final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz"); final Calendar initial = Calendar.getInstance(); initial.set(2014, Calendar.MARCH, 4, 10, 31, 59); // Tue, March 4, 2014, 10:31 final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false); // expect Wed, March 4, 2014, 11:00 final Calendar expected = Calendar.getInstance(); expected.set(2014, Calendar.MARCH, 4, 11, 00, 00); expected.set(Calendar.MILLISECOND, 0); assertEquals(format(expected.getTimeInMillis()), format(actual)); }
/** * @since 2.9 */ protected RollingFileManager(final LoggerContext loggerContext, final String fileName, final String pattern, final OutputStream os, final boolean append, final boolean createOnDemand, final long size, final long time, final TriggeringPolicy triggeringPolicy, final RolloverStrategy rolloverStrategy, final String advertiseURI, final Layout<? extends Serializable> layout, final String filePermissions, final String fileOwner, final String fileGroup, final boolean writeHeader, final ByteBuffer buffer) { super(loggerContext, fileName, os, append, false, createOnDemand, advertiseURI, layout, filePermissions, fileOwner, fileGroup, writeHeader, buffer); this.size = size; this.initialTime = time; this.triggeringPolicy = triggeringPolicy; this.rolloverStrategy = rolloverStrategy; this.patternProcessor = new PatternProcessor(pattern); this.patternProcessor.setPrevFileTime(time); this.fileName = fileName; this.fileExtension = FileExtension.lookupForFile(pattern); }
manager.getPatternProcessor().formatFileName(subst, buf, lowIndex); manager.getPatternProcessor().formatFileName(subst, buf, i + 1);