Log::Fine::Handle::File::Timestamp - Output log messages to time-stamped files


Log-Fine documentation Contained in the Log-Fine distribution.

Index


Code Index:

NAME

Top

Log::Fine::Handle::File::Timestamp - Output log messages to time-stamped files

SYNOPSIS

Top

Provides logging to a time-stamped file

    use Log::Fine;
    use Log::Fine::Handle::File::Timestamp;

    # Get a new logger
    my $log = Log::Fine->getLogger("foo");

    # register a file handle (default values shown)
    my $handle = Log::Fine::Handle::File::Timestamp
        ->new( name => 'file1',
               mask => LOGMASK_EMERG | LOGMASK_ALERT | LOGMASK_CRIT | LOGMASK_ERR | LOGMASK_WARNING | LOGMASK_NOTICE | LOGMASK_INFO,
               dir  => "/var/log",
               file => "myapp.%y%m%d.log" );

    # register the handle
    $log->registerHandle($handle);

    # log something
    $log->(INFO, "Opened new log handle");




DESCRIPTION

Top

Log::Fine::Handle::File::Timestamp, aside from having a ridiculously long name, provides logging to a time-stamped file. Usage is similar to Log::Fine::Handle::File with the exception that the file name can take an strftime(3)-compatible (strftime) string.

OVERRIDDEN METHODS

Top

fileHandle

See fileHandle in Log::Fine::Handle::File

BUGS

Top

Please report any bugs or feature requests to bug-log-fine-handle-file-timestamp at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Log-Fine. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc Log::Fine

You can also look for information at:

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Log-Fine

* CPAN Ratings

http://cpanratings.perl.org/d/Log-Fine

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Log-Fine

* Search CPAN

http://search.cpan.org/dist/Log-Fine

REVISION INFORMATION

Top

  $Id: 302f48d6b422d61fee43ff8e185c4693dbec0bc3 $

AUTHOR

Top

Christopher M. Fuhrman, <cfuhrman at panix.com>

SEE ALSO

Top

perl, Log::Fine, Log::Fine::Handle::File

COPYRIGHT & LICENSE

Top


Log-Fine documentation Contained in the Log-Fine distribution.
use strict;
use warnings;

package Log::Fine::Handle::File::Timestamp;

use base qw( Log::Fine::Handle::File );

use File::Spec::Functions;
use FileHandle;
use POSIX qw( strftime );

our $VERSION = $Log::Fine::Handle::File::VERSION;

# Constant: TODAY_FORMAT
#
# strftime-compatible format for today's date.

use constant TODAY_FORMAT => "%Y%m%d";

# Private Methods
# --------------------------------------------------------------------

{

        my $today;

        # getter/setter for today.
        sub _Today { $today = shift || $today; return $today; }

}

sub fileHandle
{

        my $self  = shift;
        my $today = _Today();

        # return if we have a registered filehandle and the date is
        # still the same
        return $self->{_filehandle}
            if (    defined $self->{_filehandle}
                and $self->{_filehandle}->isa("IO::File")
                and defined fileno($self->{_filehandle})
                and defined $today
                and strftime(TODAY_FORMAT, localtime(time)) eq $today);

        # we need a new file.  Close our filehandle if it exists
        $self->{_filehandle}->close()
            if (    defined $self->{_filehandle}
                and $self->{_filehandle}->isa("IO::File")
                and defined fileno($self->{_filehandle}));

        # generate file name
        my $filename =
            catdir($self->{dir}, strftime($self->{file}, localtime(time)));

        # generate a new filehandle
        $self->{_filehandle} = FileHandle->new(">> " . $filename);

        $self->_fatal("Unable to open log file $filename : $!\n")
            unless defined $self->{_filehandle};

        # set autoflush if necessary
        $self->{_filehandle}->autoflush($self->{autoflush});

        # reset today's date
        _Today(strftime(TODAY_FORMAT, localtime(time)));

        # return the newly created file handle
        return $self->{_filehandle};

}          # fileHandle();

1;          # End of Log::Fine::Handle::File::Timestamp