NAME
Log::Simple - A simple but featureful logging mechanism.
SYNOPSIS
use Log::Simple;
my $log = Log::Simple->new(name => 'whatever'); # name is optional
$log->warning("default level (4)");
$log->_4("all levels can be called by number. This is warning()");
$log->_7("this is debug(). Default level is 4, so this won't print");
$log->level(7);
$log->debug("same as _7(). It'll print now");
$log->file('file.log');
$log->info("this will go to file");
$log->file(0); # back to STDOUT
$log->_6("info facility, example output");
#[2016-03-17 16:49:32.491][info][whatever] info facility, example output
$log->display(0);
$log->info("display(0) disables all output but this msg");
$log->info("see display() method for disabling, enabling individual tags");
$log->display(1);
$log->info("all tags enabled");
#[2016-03-17 16:52:06.356][info][whatever][5689][t/syn.pl|29] all tags enabled
$log->print(0);
my $log_entry = $log->info("print(0) disables printing and returns the entry");
DESCRIPTION
*** This is the first public release. The POD may be off a bit, and
despite extensive CI testing on multiple platforms, there still may be
a few small issues. ***
Lightweight (core-only) and very simple yet powerful debug tool for
printing or writing to file log type entries based on a configurable
level (0-7).
It provides the ability to programmatically change which output tags to
display, provides numbered methods so you don't have to remember the
name to number level translation, provides the ability to create
descendent children, easily enable/disable file output, levels, display
etc.
Log entry format
By default, log entries appear as such, with a timestamp, the name of
the facility, the name (if specified in the constructor) and finally
the actual log entry message.
[2016-03-17 17:01:21.959][info][whatever] info facility, example output
All of the above tags can be enabled/disabled programatically at any
time, and there are others that are not enabled by default. See display
method for details.
Levels
Verbosity and associated levels are:
level 0, 'emergency|emerg' =item level 1, 'alert' =item level 2,
'critical|crit' =item level 3, 'error|err' =item level 4,
'warning|warn' =item level 5, 'notice' =item level 6, 'info' =item
level 7, 'debug'
Note that all named level methods have an associated _N method, so you
don't have to remember the names at all. Using the numbers is often
much easier.
Setting the level will display all messages related to that level and
below.
METHODS
new(%args)
Builds and returns a new Log::Simple object. All arguments are
optional, and they can all be set using accessor methods after
instantiation. These params are:
name
Default: undef
Specify a name for your log object. It will be displayed by default in
the log output. The name of your program or module is a good choice.
level => Integer
Default: 4
Specify the name or equivalent number (0-7) of the highest level to
log. Note that this can be set in a LS_LEVEL environment variable (and
changed while your program is running).
file => String
Default: undef
The name of a file to write log entries into. By default, we print to
STDOUT.
write_mode => Bool
Default: 'a' (append)
By default, we append to the chosen log file. Send in 'w' or 'write' to
overwrite instead.
print => Bool
Default: 1 (enabled)
If a false value is sent in (ie. 0), we'll disable printing the log
entries, and return them as a string value instead on each call.
display => Bool
Default: enabled
Send in a false value to disable all log entry tags, less the actual
message. See display() in METHODS to learn how to enable and disable
individual tags.
level(Ingeger)
Set and return the facility level. Will return the current value with a
param sent in or not. It can be changed at any time. Note that you can
set this with the LS_LEVEL environment variable, at any time. the next
method call regardless of what it is will set it appropriately.
file('file.log', 'mode')
By default, we write to STDOUT. Send in the name of a file to write
there instead. Mode is optional; we'll append to the file by default.
Send in 'w' or 'write' to overwrite the file.
display(HASH|Bool)
List of log entry tags, and default printing status: name => 1,
#specified in new() or name() time => 1, label => 1, # the string value
of the level being called pid => 0, # process ID proc => 0, #
"filename|line number" of the caller
In HASH param mode, send in any or all of the tags with 1 (enable) or 0
(disable).
You can also send in 1 to enable all of the tags, or 0 to disable them
all.
print(Bool)
Default is enabled. If disabled, we won't print at all, and instead,
return the log entry as a scalar string value.
child('name')
This method will create a clone of the existing Log::Simple object, and
then concatenate the parent's name with the optional name sent in here
for easy identification in the logs.
All settings employed by the parent will be used in the child, unless
explicity changed via the methods.
In a module or project, you can create a top-level log object, then in
all subs, create a child with the sub's name to easily identify flow
within the log. In an OO project, stuff the parent log into the main
object, and clone it from there.
LOGGING METHODS
emergency
Level 0
aka: _0(), emerg()
alert
Level 1
aka: _1()
critical
Level 2
aka: _2(), crit()
error
Level 3
aka: _3(), err()
warning
Level 4
aka: _4(), warn()
notice
Level 5
aka: _5()
info
Level 6
aka: _6()
debug
Level 7
aka: _7()
HELPER METHODS
These methods may be handy to the end user, but aren't required for
end-use.
levels('names')
Returns the hash of level_num => level_name mapping.
If the optional string names is sent in, we'll return an array of just
the names, in numeric order from lowest to highest.
timestamp
Returns the current time in the following format: 2016-03-17
17:51:02.241
AUTHOR
Steve Bertrand, <steveb at cpan.org>
BUGS
Please report any bugs or feature requests to
https://github.com/stevieb9/p5-log-simple/issues
REPOSITORY
https://github.com/stevieb9/p5-log-simple
BUILD RESULTS (THIS VERSION)
CPAN Testers:
http://matrix.cpantesters.org/?dist=Log-Simple
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Log::Simple
SEE ALSO
There are too many other logging modules to list here, but the idea for
this one came from Log::Basic. However, this one was written completely
from scratch.
LICENSE AND COPYRIGHT
Copyright 2016 Steve Bertrand.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See
http://dev.perl.org/licenses/ for more information.