org.apache.log.output.io.rotate

Class RevolvingFileStrategy

public class RevolvingFileStrategy extends Object implements FileStrategy

strategy for naming log files based on appending revolving suffix. If the initial rotation is not specified then the class will attempt to calculate the rotation number via the following algorithm. It will search for the file with the highest number in the rotation. It will then increment its rotation number and use that number. If all files in rotation are present then it will then set the initial rotation to the next rotation after the most recently created file.

Author: Avalon Development Team Bernhard Huber Peter Donald David Gray

Field Summary
Filem_baseFile
DecimalFormatm_decimalFormat
intm_maxRotations
intm_rotation
static StringPATTERN
Constructor Summary
RevolvingFileStrategy(File baseFile, int maxRotations)
Creation of a new instane ofthe revolving file strategy.
RevolvingFileStrategy(File baseFile, int initialRotation, int maxRotations)
Creation of a new instane ofthe revolving file strategy.
Method Summary
intcalculateInitialRotation()
Method that searches through files that match the pattern for resolving file and determine the last generation written to.
intcalculateRotationForFile(File file)
Return the rotation for the specified file
int[]calculateRotations(File[] matchingFiles)
Generate an array of rotation numbers for all the files specified.
intgetCurrentRotation()
Retrieve the current rotation number.
File[]getMatchingFiles()
Get a list of files that could have been part of the rotation.
FilenextFile()
Calculate the real file name from the base filename.

Field Detail

m_baseFile

private File m_baseFile

m_decimalFormat

private DecimalFormat m_decimalFormat

m_maxRotations

private int m_maxRotations

m_rotation

private int m_rotation

PATTERN

private static final String PATTERN

Constructor Detail

RevolvingFileStrategy

public RevolvingFileStrategy(File baseFile, int maxRotations)
Creation of a new instane ofthe revolving file strategy.

Parameters: baseFile the base file maxRotations the maximum number of rotations ??

RevolvingFileStrategy

public RevolvingFileStrategy(File baseFile, int initialRotation, int maxRotations)
Creation of a new instane ofthe revolving file strategy.

Parameters: baseFile the base file initialRotation the number of initial rotations ?? maxRotations the maximum number of rotations??

Method Detail

calculateInitialRotation

private int calculateInitialRotation()
Method that searches through files that match the pattern for resolving file and determine the last generation written to.

Returns: the initial rotation

calculateRotationForFile

private int calculateRotationForFile(File file)
Return the rotation for the specified file

Parameters: file the file to check

Returns: the rotation of the file

calculateRotations

private int[] calculateRotations(File[] matchingFiles)
Generate an array of rotation numbers for all the files specified.

Parameters: matchingFiles the files to generate rotation numbers for

Returns: the array containing rotations

getCurrentRotation

public int getCurrentRotation()
Retrieve the current rotation number.

Returns: the current rotation number.

getMatchingFiles

private File[] getMatchingFiles()
Get a list of files that could have been part of the rotation.

Returns: the list of files that match

nextFile

public File nextFile()
Calculate the real file name from the base filename.

Returns: File the calculated file name