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"