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"