| Log-Fine documentation | Contained in the Log-Fine distribution. |
Log::Fine::Logger - Main logging object
Provides an object through which to log.
use Log::Fine;
use Log::Fine::Logger;
# get a new logging object
my $log = Log::Fine->logger("mylogger");
# alternatively, specify a custom map
my $log = Log::Fine->logger("mylogger", "Syslog");
# register a handle
$log->registerHandle( Log::Fine::Handle::Console->new() );
# log a message
$log->log(DEBG, "This is a really cool module!");
# illustrate use of the log skip API
package Some::Package::That::Overrides::Log::Fine::Logger;
use base qw( Log::Fine::Logger );
sub log
{
my $self = shift;
my $lvl = shift;
my $msg = shift;
# do some custom stuff to message
# make sure the formatter logs the correct calling method.
$self->incrSkip();
$self->SUPER::log($lvl, $msg);
$self->decrSkip();
} # log()
The Logger class is the main workhorse of the Log::Fine framework, providing the main log method from which to log. In addition, the Logger class provides means by which the developer can control the parameter passed to any caller() call so information regarding the correct stack frame is displayed.
Decrements the value of the skip attribute by one
The newly decremented value
Increments the value of the skip attribute by one
The newly incremented value
Logs the message at the given log level
Level at which to log
Message to log
The object
Registers the given Log::Fine::Handle object with the logging facility.
A valid Log::Fine::Handle subclass
The object
Getter/Setter for the objects skip attribute
See caller in perlfunc for details
The objects skip attribute
Please report any bugs or feature requests to
bug-log-fine-logger 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.
You can find documentation for this module with the perldoc command.
perldoc Log::Fine
You can also look for information at:
$Id: 127903180f3b98bf23dd379f25bf110fc0e8b435 $
Christopher M. Fuhrman, <cfuhrman at panix.com>
perl, Log::Fine, Log::Fine::Handle
Copyright (c) 2008, 2010 Christopher M. Fuhrman, All rights reserved
This program is free software licensed under the...
The BSD License
The full text of the license can be found in the LICENSE file included with this module.
| Log-Fine documentation | Contained in the Log-Fine distribution. |
use strict; use warnings; package Log::Fine::Logger; use base qw( Log::Fine ); use Log::Fine; our $VERSION = $Log::Fine::VERSION; # Constant: LOG_SKIP_DEFAULT # # By default, calls to caller() will be given a stack frame of 2. use constant LOG_SKIP_DEFAULT => 2; # --------------------------------------------------------------------
sub decrSkip { return --$_[0]->{_skip}; } # decrSkip()
sub incrSkip { return ++$_[0]->{_skip}; } # incrSkip()
sub log { my $self = shift; my $lvl = shift; my $msg = shift; # see if we have any handles defined $self->_fatal("No handles defined!") unless ( defined $self->{_handles} and ref $self->{_handles} eq "ARRAY" and scalar @{ $self->{_handles} } > 0); # iterate through each handle, logging as appropriate foreach my $handle (@{ $self->{_handles} }) { $handle->msgWrite($lvl, $msg, $self->{_skip}) if $handle->isLoggable($lvl); } # Victory return $self; } # log()
sub registerHandle { my $self = shift; my $handle = shift; # validate handle $self->_fatal( "first argument must be a valid Log::Fine::Handle object\n") unless (defined $handle and $handle->isa("Log::Fine::Handle")); # initialize handles if we haven't already $self->{_handles} = [] unless (defined $self->{_handles} and ref $self->{_handles} eq "ARRAY"); # save the handle push @{ $self->{_handles} }, $handle; return $self; } # registerHandle()
sub skip { my $self = shift; my $val = shift; # if we are given a value, then set skip $self->{_skip} = $val if (defined $val and $val =~ /^\d+$/); return $self->{_skip}; } # skip() # -------------------------------------------------------------------- ## # Initializes our object sub _init { my $self = shift; # validate name $self->_fatal("Loggers need names!") unless (defined $self->{name} and $self->{name} =~ /^\w+$/); # set logskip if necessary $self->{_skip} = LOG_SKIP_DEFAULT unless ($self->{_skip} and $self->{_skip} =~ /\d+/); return $self; } # _init()
1; # End of Log::Fine::Logger