[logback-dev] [GIT] Logback: the generic, reliable, fast and flexible logging framework. branch master updated. v_1.0.0-55-g0fe93ab
Joern Huxhorn
jhuxhorn at googlemail.com
Wed Dec 21 10:23:24 CET 2011
ch.qos.logback.core.rolling.helper.FileNamePatternTest.convertMultipleDates is currently failing with the following message:
expected:<foo[]2003.05/2003.05.20.t...> but was:<foo[-]2003.05/2003.05.20.t...>
Cheers,
Joern.
On 20.12.2011, at 19:42, Gitbot wrote:
> This is an automated email from the git hooks/post-receive script. It was
> generated because a ref change was pushed to the repository containing
> the project "Logback: the generic, reliable, fast and flexible logging framework.".
>
> The branch, master has been updated
> via 0fe93ab52a11545a7f88fd367d4777d14c733606 (commit)
> from fef529f87d72e94a582e5cd515c7acaddf01e07e (commit)
>
> Those revisions listed above that are new to this repository have
> not appeared on any other notification email; so we list those
> revisions in full, below.
>
> - Log -----------------------------------------------------------------
> http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=0fe93ab52a11545a7f88fd367d4777d14c733606
> http://github.com/ceki/logback/commit/0fe93ab52a11545a7f88fd367d4777d14c733606
>
> commit 0fe93ab52a11545a7f88fd367d4777d14c733606
> Author: Ceki Gulcu <ceki at qos.ch>
> Date: Tue Dec 20 19:41:28 2011 +0100
>
> Added support for multiple %d tokens in FileNamePattern
>
> diff --git a/logback-classic/src/test/resources/TWO_DATE_logback-test.xml b/logback-classic/src/test/resources/TWO_DATE_logback-test.xml
> new file mode 100644
> index 0000000..d2c3444
> --- /dev/null
> +++ b/logback-classic/src/test/resources/TWO_DATE_logback-test.xml
> @@ -0,0 +1,21 @@
> +<configuration>
> + <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
> +
> + <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
> + <file>test.log</file>
> +
> +
> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
> + <!-- rollover every minute -->
> + <fileNamePattern>bla-%d{yyyy-MM-dd, SECONDARY}/app.%d{yyyy-MM-dd'T'HH_mm}.log</fileNamePattern>
> + </rollingPolicy>
> +
> + <encoder>
> + <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS"} [%thread] %-5level %logger{36} - %msg%n%xEx</pattern>
> + </encoder>
> + </appender>
> +
> + <root level="DEBUG">
> + <appender-ref ref="FILE"/>
> + </root>
> +</configuration>
> \ No newline at end of file
> diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
> index b1690ad..b5a05da 100644
> --- a/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
> +++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.java
> @@ -41,7 +41,7 @@ abstract public class TimeBasedFileNamingAndTriggeringPolicyBase<E> extends
> }
>
> public void start() {
> - DateTokenConverter dtc = tbrp.fileNamePattern.getDateTokenConverter();
> + DateTokenConverter dtc = tbrp.fileNamePattern.getPrimaryDateTokenConverter();
> if (dtc == null) {
> throw new IllegalStateException("FileNamePattern ["
> + tbrp.fileNamePattern.getPattern()
> diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
> index 582336d..5225d56 100644
> --- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
> +++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DateTokenConverter.java
> @@ -14,6 +14,7 @@
> package ch.qos.logback.core.rolling.helper;
>
> import java.util.Date;
> +import java.util.List;
>
> import ch.qos.logback.core.CoreConstants;
> import ch.qos.logback.core.pattern.DynamicConverter;
> @@ -30,16 +31,27 @@ public class DateTokenConverter<E> extends DynamicConverter<E> implements MonoTy
> * The conversion word/character with which this converter is registered.
> */
> public final static String CONVERTER_KEY = "d";
> + public final static String SECONDARY_TOKEN = "SECONDARY";
> public static final String DEFAULT_DATE_PATTERN = CoreConstants.DAILY_DATE_PATTERN;
>
> private String datePattern;
> private CachingDateFormatter cdf;
> -
> + // is this token converter primary or secondary? Only the primary converter
> + // determines the rolling period
> + private boolean secondary = false;
> public void start() {
> this.datePattern = getFirstOption();
> if (this.datePattern == null) {
> this.datePattern = DEFAULT_DATE_PATTERN;
> }
> +
> + final List<String> optionList = getOptionList();
> + if(optionList != null && optionList.size()> 1) {
> + String secondOption = optionList.get(1);
> + if(SECONDARY_TOKEN.equalsIgnoreCase(secondOption)) {
> + secondary = true;
> + }
> + }
> cdf = new CachingDateFormatter(datePattern);
> }
>
> @@ -72,4 +84,8 @@ public class DateTokenConverter<E> extends DynamicConverter<E> implements MonoTy
> DatePatternToRegexUtil toRegex = new DatePatternToRegexUtil(datePattern);
> return toRegex.toRegex();
> }
> +
> + public boolean isPrimary() {
> + return !secondary;
> + }
> }
> diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
> index 85b494a..8253844 100644
> --- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
> +++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/DefaultArchiveRemover.java
> @@ -75,7 +75,7 @@ abstract public class DefaultArchiveRemover extends ContextAwareBase implements
> abstract void cleanByPeriodOffset(Date now, int periodOffset);
>
> boolean computeParentCleaningFlag(FileNamePattern fileNamePattern) {
> - DateTokenConverter dtc = fileNamePattern.getDateTokenConverter();
> + DateTokenConverter dtc = fileNamePattern.getPrimaryDateTokenConverter();
> // if the date pattern has a /, then we need parent cleaning
> if (dtc.getDatePattern().indexOf('/') != -1) {
> return true;
> diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
> index 67f207b..dab1a72 100644
> --- a/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
> +++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/helper/FileNamePattern.java
> @@ -81,12 +81,15 @@ public class FileNamePattern extends ContextAwareBase {
> return pattern;
> }
>
> - public DateTokenConverter getDateTokenConverter() {
> + public DateTokenConverter getPrimaryDateTokenConverter() {
> Converter p = headTokenConverter;
>
> while (p != null) {
> if (p instanceof DateTokenConverter) {
> - return (DateTokenConverter) p;
> + DateTokenConverter dtc = (DateTokenConverter) p;
> + // only primary converters should be returned as
> + if(dtc.isPrimary())
> + return dtc;
> }
>
> p = p.getNext();
> diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
> new file mode 100644
> index 0000000..7d574a4
> --- /dev/null
> +++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
> @@ -0,0 +1,68 @@
> +package ch.qos.logback.core.rolling;
> +
> +import ch.qos.logback.core.Context;
> +import ch.qos.logback.core.ContextBase;
> +import org.junit.Before;
> +import org.junit.Test;
> +
> +import java.util.logging.Logger;
> +
> +import static org.junit.Assert.assertEquals;
> +
> +/**
> + * @author Ceki Gücü
> + */
> +public class TimeBasedFileNamingAndTriggeringPolicyBaseTest {
> +
> + static long MILLIS_IN_MINUTE = 60*1000;
> +
> + Context context = new ContextBase();
> + RollingFileAppender rfa = new RollingFileAppender();
> + TimeBasedRollingPolicy tbrp = new TimeBasedRollingPolicy();
> + DefaultTimeBasedFileNamingAndTriggeringPolicy timeBasedFNATP = new DefaultTimeBasedFileNamingAndTriggeringPolicy();
> +
> + @Before
> + public void setUp() {
> + rfa.setContext(context);
> + tbrp.setContext(context);
> + timeBasedFNATP.setContext(context);
> +
> + rfa.setRollingPolicy(tbrp);
> + tbrp.setParent(rfa);
> + tbrp.setTimeBasedFileNamingAndTriggeringPolicy(timeBasedFNATP);
> + timeBasedFNATP.setTimeBasedRollingPolicy(tbrp);
> + }
> +
> + @Test
> + public void singleDate() {
> + // Tuesday December 20th 17:59:01 CET 2011
> + long startTime = 1324400341553L;
> + tbrp.setFileNamePattern("foo-%d{yyyy-MM'T'mm}.log");
> + tbrp.start();
> +
> + timeBasedFNATP.setCurrentTime(startTime);
> + timeBasedFNATP.start();
> +
> + timeBasedFNATP.setCurrentTime(startTime+MILLIS_IN_MINUTE);
> + timeBasedFNATP.isTriggeringEvent(null, null);
> + String elapsedPeriodsFileName = timeBasedFNATP.getElapsedPeriodsFileName();
> + assertEquals("foo-2011-12T59.log", elapsedPeriodsFileName);
> + }
> +
> + at Test
> + public void multiDate() {
> + // Tuesday December 20th 17:59:01 CET 2011
> + long startTime = 1324400341553L;
> + tbrp.setFileNamePattern("foo-%d{yyyy-MM, SECONDARY}/%d{mm}.log");
> + tbrp.start();
> +
> + timeBasedFNATP.setCurrentTime(startTime);
> + timeBasedFNATP.start();
> +
> + timeBasedFNATP.setCurrentTime(startTime+MILLIS_IN_MINUTE);
> + timeBasedFNATP.isTriggeringEvent(null, null);
> + String elapsedPeriodsFileName = timeBasedFNATP.getElapsedPeriodsFileName();
> + assertEquals("foo-2011-12/59.log", elapsedPeriodsFileName);
> + }
> +
> +}
> diff --git a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
> index 7f069cf..8a35f15 100644
> --- a/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
> +++ b/logback-core/src/test/java/ch/qos/logback/core/rolling/helper/FileNamePatternTest.java
> @@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals;
>
> import java.util.Calendar;
>
> +import ch.qos.logback.core.util.StatusPrinter;
> import org.junit.Test;
>
> import ch.qos.logback.core.Context;
> @@ -139,4 +140,13 @@ public class FileNamePatternTest {
> assertEquals("foo-\\d{4}\\.\\d{2}\\.\\d{2}T-\\d{1,2}.txt", regex);
> }
> }
> +
> + @Test
> + public void convertMultipleDates() {
> + Calendar cal = Calendar.getInstance();
> + cal.set(2003, 4, 20, 17, 55);
> + FileNamePattern fnp = new FileNamePattern("foo-%d{yyyy.MM, SECONDARY}/%d{yyyy.MM.dd}.txt", context);
> + assertEquals("foo2003.05/2003.05.20.txt", fnp.convert(cal.getTime()));
> +
> + }
> }
>
> -----------------------------------------------------------------------
>
> Summary of changes:
> .../src/test/resources/TWO_DATE_logback-test.xml | 21 ++++++
> ...TimeBasedFileNamingAndTriggeringPolicyBase.java | 2 +-
> .../core/rolling/helper/DateTokenConverter.java | 18 +++++-
> .../core/rolling/helper/DefaultArchiveRemover.java | 2 +-
> .../core/rolling/helper/FileNamePattern.java | 7 ++-
> ...BasedFileNamingAndTriggeringPolicyBaseTest.java | 68 ++++++++++++++++++++
> .../core/rolling/helper/FileNamePatternTest.java | 10 +++
> 7 files changed, 123 insertions(+), 5 deletions(-)
> create mode 100644 logback-classic/src/test/resources/TWO_DATE_logback-test.xml
> create mode 100644 logback-core/src/test/java/ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBaseTest.java
>
>
> hooks/post-receive
> --
> Logback: the generic, reliable, fast and flexible logging framework.
> _______________________________________________
> logback-dev mailing list
> logback-dev at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-dev
More information about the logback-dev
mailing list