View Javadoc
1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2022, QOS.ch. All rights reserved.
4    *
5    * This program and the accompanying materials are dual-licensed under
6    * either the terms of the Eclipse Public License v1.0 as published by
7    * the Eclipse Foundation
8    *
9    *   or (per the licensee's choosing)
10   *
11   * under the terms of the GNU Lesser General Public License version 2.1
12   * as published by the Free Software Foundation.
13   */
14  package ch.qos.logback.core.rolling;
15  
16  import ch.qos.logback.core.rolling.helper.ArchiveRemover;
17  import ch.qos.logback.core.spi.ContextAware;
18  
19  /**
20   * This interface lists the set of methods that need to be implemented by
21   * triggering policies which are nested within a {@link TimeBasedRollingPolicy}.
22   *
23   * <p>This interface should be considered as an extension of  {@link TimeBasedRollingPolicy} with file naming
24   * support methods.
25   * </p>
26   *
27   * @See also {@link TimeBasedFileNamingAndTriggeringPolicyBase}
28   *
29   * @author Ceki G&uuml;lc&uuml;
30   * 
31   * @param <E>
32   */
33  public interface TimeBasedFileNamingAndTriggeringPolicy<E> extends TriggeringPolicy<E>, ContextAware {
34  
35      /**
36       * Set the host/parent {@link TimeBasedRollingPolicy}.
37       * 
38       * @param tbrp parent TimeBasedRollingPolicy
39       */
40      void setTimeBasedRollingPolicy(TimeBasedRollingPolicy<E> tbrp);
41  
42      /**
43       * Return the file name for the elapsed periods file name.
44       * 
45       * @return
46       */
47      String getElapsedPeriodsFileName();
48  
49      /**
50       * Return the current periods file name without the compression suffix. This
51       * value is equivalent to the active file name.
52       * 
53       * @return current period's file name (without compression suffix)
54       */
55      String getCurrentPeriodsFileNameWithoutCompressionSuffix();
56  
57      /**
58       * Return the archive remover appropriate for this instance.
59       */
60      ArchiveRemover getArchiveRemover();
61  
62      /**
63       * Return the current time which is usually the value returned by
64       * System.currentMillis(). However, for <b>testing</b> purposed this value may
65       * be different than the real time.
66       * 
67       * @return current time value
68       */
69      long getCurrentTime();
70  
71      /**
72       * Set the current time. Only unit tests should invoke this method.
73       * 
74       * @param now
75       */
76      void setCurrentTime(long now);
77  
78      /**
79       * Set some date in the current period. Only unit tests should invoke this
80       * method.
81       * 
82       * WARNING: method removed. A unit test should not set the date in current
83       * period. It is the job of the FNATP to compute that.
84       * 
85       * @param date
86       */
87      // void setDateInCurrentPeriod(Date date);
88  }