Log::Agent::File::Rotate - a rotating logfile set
# # This class is not user-visible. # # It is documented only for programmers wishing to inherit # from it to further extend its behaviour. #
require Log::Agent::Driver::File; require Log::Agent::Rotate; require Log::Agent::File::Rotate;
my $config = Log::Agent::Rotate->make(...); my $driver = Log::Agent::Driver::File->make(...); my $fh = Log::Agent::File::Rotate->make("file", $config, $driver);
This class represents a rotating logfile and is used drivers wishing
to rotate their logfiles periodically. From the outside, it exports
a single print
routine, just like Log::Agent::File::Native
.
Internally, it uses the parameters given by a Log::Agent::Rotate
object
to transparently close the current logfile and cycle the older logs.
Before rotating the current logfile, the string:
*** LOGFILE ROTATED ON <local date>
is emitted, so that people monitoring the file via "tail -f" know about it and are not surprised by the sudden stop of messages.
Its exported interface is:
Log::Agent::Rotate
.
Prints args to the file. After having printed the data, monitor the file against the thresholds defined in the configuration, and possibly rotate the logfiles according to the parameters held in the same configuration object.
When the is_alone
flag is not set in the configuration, the logfile is
checked everytime a print
is issued to see if its inode changed. Indeed,
when several instances of the same program using rotating logfiles are
running, each of them may decide to cycle the logs at some point in time, and
therefore our opened handle could point to an already renamed or unlinked file.
Originally written by Raphael Manfredi <Raphael_Manfredi@pobox.com>, currently maintained by Mark Rogaski <mrogaski@pobox.com>.
Log::Agent::Rotate(3), Log::Agent::Driver::File(3).