SYNOPSIS

    my $log_formatter = Log::Sprintf->new({
      category => 'DeployMethod',
      format   => '[%L][%p][%c] %m',
    });

    $log_formatter->sprintf({
      line     => 123,
      package  => 'foo',
      priority => 'trace',
      message  => 'starting connect',
    });

   Or to add or override flags, make a subclass and use it instead:

    package SuprLogr;
    use base 'Log::Sprintf';

    sub codes {
      return {
        c => 'coxyx',
        x => 'xylophone',
      }
    }

    sub coxyx { 'COXYX' }

    sub xylophone { 'doink' }

   and elsewhere...

    my $log_formatter = SuprLogr->new({ format => '[%c][%x] %m' });

    $log_formatter->sprintf({ message => 'GOGOGO' });

DESCRIPTION

   This module is meant as a mostly drop in replacement for the log
   formatting system that Log::log4perl uses; it doesn't bring in all of
   the weight of Log::log4perl and allows you to add new flags in
   subclasses.

DIFFERENCES FROM LOG4PERL

   Instead of %p{1} for a single character priority, this uses %{1}p.
   Similarly, instead of %m{chomp} for a message with a trailing newline
   removed, this uses %{chomp}m.

METHODS

new

    my $log_formatter = Log::Sprintf->new({
      category     => 'WebServer',
      format       => '[%L][%C] %m',
      priority     => 'trace',
    })

   returns a freshly instantiated Log::Sprintf object. Currently it has
   the following options, none of which are required.

 arguments

     * format - the format to use for logging. See "formats" for what's
     available.

     * category - what category we are logging to

     * priority - the priority or level we are logging to (trace, debug,
     etc)

     * package - the package you are logging from

     * date - the date the log happened

     * file - the file you are logging from

     * host - the host you are logging from

     * line - the line you are logging from

     * subroutine - the subroutine you are logging from

     * pid - the pid you are logging from

     * priority - the priority (level) you are logging at

     * milliseconds_since_start - milliseconds since program start

     * milliseconds_since_last_log - milliseconds since previous log

     * stacktrace - full stacktrace

 formats

     * C - "package"

     * c - "category"

     * d - "date", in the format of localtime or gmtime

     * F - "file"

     * H - "host"

     * L - "line"

     * l - "location"

     * M - "subroutine"

     * m - "message"

     * {chomp}m - "message", but with any trailing newline removed

     * n - "newline"

     * P - "pid"

     * p - "priority"

     * {1}p - "priority", but just the first character

     * r - "milliseconds_since_start"

     * R - "milliseconds_since_last_log"

     * T - "stacktrace", an arrayref of arrayrefs in the format of
     caller($x), ordered by deeper to shallower in the trace

sprintf

   Takes the exact same arguments as "new" with the additional message
   argument. Returns a formatted string. Note that if a flag is included
   in your format but its corresponding value is not included in the call
   to sprintf you will get lots of warnings.

format

   Returns the current format

SUBCLASSING

   This module was designed from the start to be subclassed. All you need
   to know to subclass it (to add or change formatting codes) is that the
   codes subroutine should be defined in your subclass, and should return
   a hashref where keys are codes and values are the names of methods your
   class defines to fill in the values of those codes.

MESSAGE METHODS

milliseconds_since_start

   returns milliseconds since instantiation

milliseconds_since_last_log

   returns milliseconds since last log

line

   returns line

file

   returns file

package

   returns package

subroutine

   returns subroutine

category

   returns category

message

   returns message; if passed "chomp" it will remove a trailing newline
   from message

priority

   returns priority; if passed a true value it will only return the first
   character

date_str

   returns date formatted as YYYY-MM-DD HH:MM:SS

host

   returns host

location

   returns location (as in "$subroutine $file:$line")

newline

   returns newline

pid

   returns process id

SEE ALSO

   Log::Log4perl

     this module has a lot of really neat ideas

   Log::Structured

   you can use this module to fill in the values for "sprintf"