NAME
   Log::Declare - A high performance Perl logging module

OVERVIEW
   Creates syntactic sugar for logging using categories with sprintf
   support.

   Complex logging statements can be written without impacting on
   performance when those log levels are disabled.

   For example, using a typical logger, this would incur a penalty even if
   the logging is disabled:

       $self->log(Dumper $myobject);

   but with Log::Declare we incur almost no performance penalty if 'info'
   level is disabled, since the following log statement:

       info Dumper $myobject [mycategory];

   gets rewritten as:

       info && $Log::Declare::logger->log('info', ['mycategory'], Dumper $myobject);

   which means if 'info' returns 0, nothing else gets evaluated.

SYNOPSIS
       use Log::Declare;
       use Log::Declare qw/ :nosyntax /; # disables syntactic sugar
       use Log::Declare qw/ :nowarn :noerror ... /; # disables specific sugar

       # with syntactic sugar
       debug "My debug message" [category];
       error "My error message: %s", $error [category1, category2];

       # auto-dump variables with Data::Dumper
       debug "Using sprintf format: %s", d:$error [category];

       # auto-ref variables with ref()
       debug "Using sprintf format: %s", r:$error [category];

       # capture other loggers (loses Log::Declare performance)
       Log::Declare->capture('Test::Logger::log');
       Log::Declare->capture('Test::Logger::log' => sub {
           my ($logger, @args) = @_;
           # manipulate logger args here
           return @args;
       });

NAMESPACES
   If you're using a namespace-aware logger, Log::Declare can use your
   logger's namespacing to determine log levels. For example:

       $Log::Declare::levels{'debug'} = sub {
           Log::Log4perl->get_logger(caller)->is_debug;
       };