NAME
XAS::Apps::Rotate - Rotate files based on a config file
SYNOPSIS
use XAS::Apps::Rotate;
my $app = XAS::Apps::Rotate->new(
-throws => 'rotate',
-facility => 'systems',
-priority => 'warn',
);
exit $app->run;
DESCRIPTION
This module is used to rotate files.
CONFIGURATION
The configuration file uses the standard windows .ini file. It has the following format.
[settings]
compressor = zip - default file compressor
zip-command - zip command defaults to 'c:\bin\zip.exe'
gzip-command - gzip command defaults to 'c:\bin\gzip.exe'
bzip2-command - bzip2 command defaults to 'c:\bin\bzip2.exe'
compress-command - compress command defaults to 'c:\bin\compress.exe'
tail-command - tail command defaults to 'c:\bin\tail.exe'
[log\test.log] - file to process, may have DOS wildcards
compress = true - wither to compress the file
method = move - how to handle the file
missingok = false - whither a missing file is OK
lines-or-files = files -
create-new = false - create a new file after rotation
modify-age - process based on last modification
create-age - process based in creation time
file-size - process based on file size
ifempty - process if file is empty
file-count - number of rotated files kept
line-count - how many line to transfer to new file
prolog - command to process before rotation
epilog - command to process after rotation
pause - number of seconds to pause after prolog and epilog
METHODS
main
Process the configuration file.
run_cmd($cmd)
Run a command and capture the output to the log file.
get_extension
Return the file extension base on compressor type.
is_true($param)
Return TRUE or FALSE based on $param. If $param is 'true', or 1 then TRUE.
is_false($param)
Return TRUE or FALSE based on $param. If $param is 'false' or 0 then TRUE.
is_older($age_diff, $age)
Parses $age_diff and checks to see if the $age is newer than the current time minus $age_diff. That is we return TRUE if a file is too new based on the criteria $age_diff and $age and the implicit parameter: the current time.
is_bigger($size_spec, $size)
Parses $size_spec and checks to see if the $size is bigger than that. We return TRUE if a file is too big.
compress_file($filename)
Compress the file based on chosen compression type.
recreate_file($filename)
Recreate the file if needed. This checks the file-or-line config item. If it is 'file' then a new file is created, if it is 'lines' then the config item 'line-count' is used to copy that number of lines from the end of the file into the beginning of the new file.
rotate_file($filename)
Perform the basic file rotation.
process_files
Process the selected files. It preforms the following actions:
- 1 Process the prolog command.
- 2 Rotate the file.
- 3 Recreate the new file.
- 4 Compress the rotated file
- 5 Process the epilog command.
find_files
Scan the local directory looking for files to rotate.
SEE ALSO
AUTHOR
Kevin L. Esteb, <kevin@kesteb.us>
COPYRIGHT AND LICENSE
Copyright (C) 2014 Kevin L. Esteb
TThis is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0. For details, see the full text of the license at http://www.perlfoundation.org/artistic_license_2_0.