NAME
Log::Sprintf - Format strings the way Log::log4perl does, without all
the weight
VERSION
version 0.001001
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"
AUTHOR
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.