MooseX::LazyLogDispatch.3pm

Langue: en

Autres versions - même langue

Version: 2007-12-21 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

MooseX::LazyLogDispatch - A Logging Role for Moose

VERSION

This document describes MooseX::LazyLogDispatch version 0.01

SYNOPSIS

     package MyApp;
     use Moose;
 
     with MooseX::LazyLogDispatch;
     # or alternately, use this role instead to give your
     # class the logger methods "debug", "warning", etc...
     # with MooseX::LazyLogDispatch::Levels;
 
     # This part optional
     #  without it you get some default logging to the screen
     has log_dispatch_conf => (
        is => 'ro',
        isa => 'Log::Dispatch::Configurator',
        lazy => 1,
        required => 1,
        default => sub {
            my $self = shift;
            My::Configurator->new( # <- you write this class!
                file => $self->log_file,
                debug => $self->debug,
            );
        },
     );
 
     # Here's another variant, using a Log::Dispatch::Configurator-style 
     #  hashref to configure things without an explicit subclass
     has log_dispatch_conf => (
        is => 'ro',
        isa => 'HashRef',
        lazy => 1,
        required => 1,
        default => sub {
            my $self = shift;
            return $self->debug
                ? {
                    class     => 'Log::Dispatch::Screen',
                    min_level => 'debug',
                    stderr    => 1,
                    format    => '[%p] %m at %F line %L%n',
                }
                : {
                    class     => 'Log::Dispatch::Syslog',
                    min_level => 'info',
                    facility  => 'daemon',
                    ident     => $self->daemon_name,
                    format    => '[%p] %m',
                };
        },
     );
     
     sub foo { 
         my ($self) = @_;
         $self->logger->debug("started foo");
         ....
         $self->logger->debug('ending foo');
     }
 
 

DESCRIPTION

Log::Dispatch role for use with your Moose classes.

INTERFACE

logger

This method is provided by this role, and it is an Log::Dispatch instance, which you can call level-names on, as in the debug examples in the synopsis.

If you want the level-names as direct methods in your class, you should use the MooseX::LazyLogDispatch::Levels role instead.

log_dispatch_config

This is an optional attribute you can give to your class. If you define it as a hashref value, that will be interpreted in the style of the configuration hashrefs documented in Log::Dispatch::Config documents when they show examples of using Log::Dispatch::Configurator for pluggable configuration.

You can also gain greater flexibility by defining your own complete Log::Dispatch::Configurator subclass and having your "log_dispatch_config" attribute be an instance of this class.

By lazy-loading either one ("lazy =" 1>), you can have the configuration determined at runtime. This is nice if you want to change your log format and/or destination at runtime based on things like MooseX::Getopt / MooseX::Daemonize parameters.

If you don't provide this attribute, we'll default to sending everything to the screen in a reasonable debugging format.

SEE ALSO

MooseX::LazyLogDispatch::Levels MooseX::LogDispatch Log::Dispatch::Configurator Log::Dispatch::Config Log::Dispatch

AUTHOR

Brandon Black "<blblack@gmail.com>"

Based in part on MooseX::LogDispatch by Ash Berlin "<ash@cpan.org>" and "<perigrin@cpan.org>"

LICENCE

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.