
Author: ceki Date: Fri Jul 31 21:11:53 2009 New Revision: 2401 Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java Log: Testing configuration file driven TimeBasedRolling Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.java Fri Jul 31 21:11:53 2009 @@ -1,8 +1,23 @@ +/** + * Logback: the generic, reliable, fast and flexible logging framework. + * + * Copyright (C) 2000-2009, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ package ch.qos.logback.core.rolling; import java.io.File; import java.util.Date; +/** + * + * @author Ceki Gülcü + * + * @param <E> + */ public class DefaultTimeBasedFileNamingAndTriggeringPolicy<E> extends TimeBasedFileNamingAndTriggeringPolicyBase<E> { @@ -10,14 +25,12 @@ @Override public void start() { super.start(); - started = true; } public boolean isTriggeringEvent(File activeFile, final E event) { long time = getCurrentTime(); - if (time >= nextCheck) { Date dateOfElapsedPeriod = dateInCurrentPeriod; elapsedPeriodsFileName = tbrp.fileNamePatternWCS Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java Fri Jul 31 21:11:53 2009 @@ -153,7 +153,7 @@ return rollingPolicy; } - public TriggeringPolicy getTriggeringPolicy() { + public TriggeringPolicy<E> getTriggeringPolicy() { return triggeringPolicy; } Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java Fri Jul 31 21:11:53 2009 @@ -31,9 +31,7 @@ } public void start() { - DateTokenConverter dtc = tbrp.fileNamePattern.getDateTokenConverter(); - if (dtc == null) { throw new IllegalStateException("FileNamePattern [" + tbrp.fileNamePattern.getPattern() Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.java Fri Jul 31 21:11:53 2009 @@ -84,9 +84,14 @@ } } - public void setTimeBasedTriggering(TimeBasedFileNamingAndTriggeringPolicy<E> timeBasedTriggering) { + public void setTimeBasedFileNamingAndTriggeringPolicy(TimeBasedFileNamingAndTriggeringPolicy<E> timeBasedTriggering) { this.timeBasedTriggering = timeBasedTriggering; } + + public TimeBasedFileNamingAndTriggeringPolicy<E> getTimeBasedFileNamingAndTriggeringPolicy() { + return timeBasedTriggering; + } + static String computeFileNameStr_WCS(String fileNamePatternStr, CompressionMode compressionMode) { Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java Fri Jul 31 21:11:53 2009 @@ -29,17 +29,17 @@ */ public class ScaffoldingForRollingTests { - static final String DATE_PATTERN_WITH_SECONDS = "yyyy-MM-dd_HH_mm_ss"; - SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN_WITH_SECONDS); + static public final String DATE_PATTERN_WITH_SECONDS = "yyyy-MM-dd_HH_mm_ss"; + static public final SimpleDateFormat SDF = new SimpleDateFormat(DATE_PATTERN_WITH_SECONDS); int diff = RandomUtil.getPositiveInt(); - String randomOutputDir = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "/"; + protected String randomOutputDir = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "/"; EchoLayout<Object> layout = new EchoLayout<Object>(); Context context = new ContextBase(); - List<String> expectedFilenameList = new ArrayList<String>(); + protected List<String> expectedFilenameList = new ArrayList<String>(); - long nextRolloverThreshold; // initialized in setUp() - long currentTime; // initialized in setUp() + protected long nextRolloverThreshold; // initialized in setUp() + protected long currentTime; // initialized in setUp() Calendar cal = Calendar.getInstance(); public void setUp() { @@ -117,16 +117,16 @@ } // assuming rollover every second - void recomputeRolloverThreshold(long ct) { + protected void recomputeRolloverThreshold(long ct) { long delta = ct % 1000; nextRolloverThreshold = (ct - delta) + 1000; } - boolean passThresholdTime(long nextRolloverThreshold) { + protected boolean passThresholdTime(long nextRolloverThreshold) { return currentTime >= nextRolloverThreshold; } - void incCurrentTime(long increment) { + protected void incCurrentTime(long increment) { currentTime += increment; } @@ -135,6 +135,30 @@ return new Date(currentTime - delta); } + protected Date getDateOfPreviousPeriodsStart() { + long delta = currentTime % 1000; + return new Date(currentTime - delta - 1000); + } + + protected void addExpectedFileName_ByDate(String testId, Date date, boolean gzExtension) { + + String fn = randomOutputDir + testId + "-" + + SDF.format(date); + System.out.println("adding "+fn); + if (gzExtension) { + fn += ".gz"; + } + expectedFilenameList.add(fn); + } + + protected void addExpectedFileNamedIfItsTime_ByDate(String testId, boolean gzExtension) { + if (passThresholdTime(nextRolloverThreshold)) { + addExpectedFileName_ByDate(testId, getDateOfCurrentPeriodsStart(), + gzExtension); + recomputeRolloverThreshold(currentTime); + } + } + String addGZIfNotLast(int i) { int lastIndex = expectedFilenameList.size() - 1; if (i != lastIndex) { Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java Fri Jul 31 21:11:53 2009 @@ -47,7 +47,7 @@ tbrp.setContext(context); satbfnatPolicy.setMaxFileSize("" + sizeThreshold); - tbrp.setTimeBasedTriggering(satbfnatPolicy); + tbrp.setTimeBasedFileNamingAndTriggeringPolicy(satbfnatPolicy); tbrp.setFileNamePattern(filenamePattern); tbrp.setParent(rfa); tbrp.timeBasedTriggering.setCurrentTime(givenTime); @@ -60,7 +60,7 @@ } @Test - public void noCompression_FileBSet_NoRestart_1() throws Exception { + public void noCompression_FileSet_NoRestart_1() throws Exception { String testId = "test1"; String file = randomOutputDir + "toto.log"; initRFA(rfa1, file); @@ -152,7 +152,7 @@ void addExpectedFileName(String testId, Date date, int fileIndexCounter, boolean gzExtension) { - String fn = randomOutputDir + testId + "-" + sdf.format(date) + "-" + String fn = randomOutputDir + testId + "-" + SDF.format(date) + "-" + fileIndexCounter + ".txt"; if (gzExtension) { fn += ".gz"; Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedRollingTest.java Fri Jul 31 21:11:53 2009 @@ -363,23 +363,6 @@ addExpectedFileName_ByFile(file); } - void addExpectedFileName_ByDate(String testId, Date date, boolean gzExtension) { - String fn = randomOutputDir + testId + "-" - + sdf.format(date); - if (gzExtension) { - fn += ".gz"; - } - expectedFilenameList.add(fn); - } - - void addExpectedFileNamedIfItsTime_ByDate(String testId, boolean gzExtension) { - if (passThresholdTime(nextRolloverThreshold)) { - addExpectedFileName_ByDate(testId, getDateOfCurrentPeriodsStart(), - gzExtension); - recomputeRolloverThreshold(currentTime); - } - } - void addExpectedFileName_ByFile(String filenameSuffix) { String fn = randomOutputDir + filenameSuffix; expectedFilenameList.add(fn);