Log::Fine::Handle - Controls where to send logging output


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

Index


Code Index:

NAME

Top

Log::Fine::Handle - Controls where to send logging output

SYNOPSIS

Top

Sets up an output handle for log messages

    use Log::Fine;
    use Log::Fine::Handle;

    # instantiate the handle (default values shown)
    my $handle = Log::Fine::Handle::Foo
        ->new( name      => "foo0",
               mask      => Log::Fine::Handle->DEFAULT_LOGMASK,
               formatter => Log::Fine::Formatter:Basic->new() );

    # see if a handle is loggable at a given level
    my $rc = $handle->isLoggable(INFO);

    # write a message
    $handle->msgWrite(INFO, "Informational message", 1);

DESCRIPTION

Top

A Log::Fine::Handle object controls where to send formatted log messages. The destination can be a file, syslog, a database table, or simply to output. Message formatting is then handled by a formatter object.

METHODS

Top

formatter

Getter/Setter for the objects formatter attribute

Parameters

* formatter

[optional] A valid Log::Fine::Formatter object

Returns

A Log::Fine::Formatter object

isLoggable

Specifies whether the handle is loggable at the given level.

Parameters

* level

Name of level or numeric value representing level

Returns

1 if this level is loggable, undef otherwise

msgWrite

Tells the handle to output the given log message.

Note: msgWrite() is an internal method to the Log::Fine framework, meant to be sub-classed. Use log in Log::Fine::Logger for actual logging.

Parameters

* level

Level at which to log

* message

Message to log

* skip

Passed to caller (caller in perlfunc) for accurate method logging

Returns

None

BUGS

Top

Please report any bugs or feature requests to bug-log-fine-handle 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: b80416da666abcc143c7915744a4d61315ecc81a $

AUTHOR

Top

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

SEE ALSO

Top

perl, Log::Fine, Log::Fine::Formatter

COPYRIGHT & LICENSE

Top


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

package Log::Fine::Handle;

use base qw( Log::Fine );

use Log::Fine;
use Log::Fine::Formatter::Basic;
use Log::Fine::Levels;

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

sub formatter
{

        my $self      = shift;
        my $formatter = shift;

        # if the first argument is a valid formatter, then set the
        # objects formatter attribute appropriately
        $self->{formatter} = $formatter
            if (defined $formatter and $formatter->isa("Log::Fine::Formatter"));

        # return the objects formatter attribute
        return $self->{formatter};

}          # formatter()

sub isLoggable
{

        my $self = shift;
        my $lvl  = shift;

        # Return undef if level is not defined
        return unless defined $lvl;

        # convert level to value if we are given a string, otherwise
        # use value as is.
        my $val =
            ($lvl =~ /^\d+$/) ? $lvl : $self->levelMap()->levelToValue($lvl);

        # Make sure we have a valid value
        return unless defined($val);

        my $shifted = 2 << $val;

        # bitand the level and the mask to see if we're loggable
        return (($self->{mask} & $shifted) == $shifted) ? 1 : undef;

}          # isLoggable()

sub msgWrite
{

        my $self  = shift;
        my $class = ref $self;

        $self->_fatal(
"direct call to abstract method msgWrite()!\n  See Log::Fine::Handle documentation"
        ) if $class eq 'Log::Fine::Handle';

        $self->_fatal("call to abstract method ${class}::msgWrite()");

}          # msgWrite()

# --------------------------------------------------------------------

##
# Initializes our object

sub _init
{

        my $self = shift;

        # perform super initializations
        $self->SUPER::_init();

        # set default bitmask
        $self->{mask} = $self->levelMap()->bitmaskAll()
            unless defined $self->{mask};

        # set the default formatter
        $self->{formatter} = Log::Fine::Formatter::Basic->new()
            unless (defined $self->{formatter}
                    and $self->{formatter}->isa("Log::Fine::Formatter"));

        # Victory!
        return $self;

}          # _init()

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