Log::Fine::Formatter::Detailed - Formatter for detailed logging


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

Index


Code Index:

NAME

Top

Log::Fine::Formatter::Detailed - Formatter for detailed logging

SYNOPSIS

Top

Formats log messages for output in a detailed format.

    use Log::Fine::Formatter::Detailed;
    use Log::Fine::Handle::Console;

    # instantiate a handle
    my $handle = Log::Fine::Handle::Console->new();

    # instantiate a formatter
    my $formatter = Log::Fine::Formatter::Detailed
        ->new( name             => 'detail0',
               timestamp_format => "%y-%m-%d %h:%m:%s" );

    # set the formatter
    $handle->formatter( formatter => $formatter );

    # format a msg
    my $str = $formatter->format(INFO, "Resistence is futile", 1);

DESCRIPTION

Top

The detailed formatter logs messages in two different formats, depending on where the log message came from.

If the log message came from a particular class (e.g. MyModule.pm) the detailed formatter will format as follows:

    [TIMESTAMP] <LEVEL> (<Package>::Method():<Line Number>) <MESSAGE>

Otherwise, the formatter will return a slightly more basic format:

    [TIMESTAMP] <LEVEL> (<Script Name>:<Line Number>) <MESSAGE>

METHODS

Top

format

Formats the given message for the given level

Parameters

* level

Level at which to log (see Log::Fine::Levels)

* message

Message to log

* skip

Controls caller skip level

Returns

The formatted text string in the form:

  [TIMESTAMP] <LEVEL> (<Package>::Method():<Line Number>) <MESSAGE>

or

  [TIMESTAMP] <LEVEL> (<Script Name>:<Line Number>) <MESSAGE>

BUGS

Top

Please report any bugs or feature requests to bug-log-fine-formatter-detailed 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: 4e61f1d5b15ca258bd5af9fe8e1aaf676c0f1f35 $

AUTHOR

Top

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

SEE ALSO

Top

perl, Log::Fine::Formatter

COPYRIGHT & LICENSE

Top


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

package Log::Fine::Formatter::Detailed;

use base qw( Log::Fine::Formatter );

use File::Basename;
use Log::Fine;
use Log::Fine::Formatter;
use Log::Fine::Levels;
use Log::Fine::Logger;

use POSIX qw( strftime );

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

sub format
{

        my $self = shift;
        my $lvl  = shift;
        my $msg  = shift;
        my $skip = shift;

        # Set skip to default if need be
        $skip = Log::Fine::Logger->LOG_SKIP_DEFAULT unless (defined $skip);

        # get the caller
        my @c = caller($skip);

        # did our call to caller() come up empty?
        if (scalar @c == 0) {

                # just include the script name
                return
                    sprintf("[%s] %-4s (%s) %s\n",
                            $self->_formatTime(),
                            $self->levelMap()->valueToLevel($lvl),
                            basename($0), $msg);

        } elsif (defined $c[0] and $c[0] eq "main") {

                # just include the script name and line number
                return
                    sprintf("[%s] %-4s (%s:%d) %s\n",
                            $self->_formatTime(),
                            $self->levelMap()->valueToLevel($lvl),
                            basename($c[1]), $c[2], $msg);

        }

        # log package, subroutine, and line number
        return
            sprintf("[%s] %-4s (%s():%d) %s\n",
                    $self->_formatTime(),
                    $self->levelMap()->valueToLevel($lvl),
                    (caller($skip + 1))[3] || "{undef}",
                    $c[2] || 0, $msg);

}          # format()

1;          # End of Log::Fine::Formatter::Detailed