/**
* Logback: the reliable, generic, fast and flexible logging framework.
* Copyright (C) 1999-2013, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are dual-licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation
*
* or (per the licensee's choosing)
*
* under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation.
*/
package ch.qos.logback.core.rolling;
import ch.qos.logback.core.FileAppender;
import ch.qos.logback.core.rolling.helper.CompressionMode;
import ch.qos.logback.core.spi.LifeCycle;
/**
* A <code>RollingPolicy</code> is responsible for performing the rolling over
* of the active log file. The <code>RollingPolicy</code> is also responsible
* for providing the <em>active log file</em>, that is the live file where
* logging output will be directed.
*
* @author Ceki Gülcü
*/
public interface RollingPolicy extends LifeCycle {
/**
* Rolls over log files according to implementation policy.
*
* <p>This method is invoked by {@link RollingFileAppender}, usually at the
* behest of its {@link TriggeringPolicy}.
*
* @throws RolloverFailure
* Thrown if the rollover operation fails for any reason.
*/
void rollover() throws RolloverFailure;
/**
* Get the name of the active log file.
*
* <p>With implementations such as {@link TimeBasedRollingPolicy}, this
* method returns a new file name, where the actual output will be sent.
*
* <p>On other implementations, this method might return the FileAppender's
* file property.
* @return the name of the active log file
*/
String getActiveFileName();
/**
* The compression mode for this policy.
*
* @return the compression mode
*/
CompressionMode getCompressionMode();
/**
* This method allows RollingPolicy implementations to be aware of their
* containing appender.
*
* @param appender the associated file appender
*/
void setParent(FileAppender appender);
}