0bd73580aa
Changelog diff is: diff --git a/Changes b/Changes index b732829..0a53712 100644 --- a/Changes +++ b/Changes @@ -2,6 +2,9 @@ Revision history for Perl extension Log-Mini {{$NEXT}} +0.1.1 2019-03-19T20:44:04Z + - Error in the constructor was fixed. 0.1.0 removed from CPAN. + 0.1.0 2019-03-19T12:08:23Z - Supports formatted with sprintf messages - log method was added
79 lines
1.4 KiB
Perl
79 lines
1.4 KiB
Perl
package Log::Mini::LoggerBase;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Carp qw(croak);
|
|
use List::Util qw(first);
|
|
use Time::Moment;
|
|
|
|
use Data::Dumper;
|
|
use feature qw/say/;
|
|
|
|
my $LEVELS = {
|
|
error => 1,
|
|
warn => 2,
|
|
info => 3,
|
|
debug => 4,
|
|
trace => 5
|
|
};
|
|
|
|
sub new {
|
|
|
|
# say STDERR Dumper(\@_);
|
|
my $class = shift;
|
|
my (%params) = @_;
|
|
|
|
my $self = {};
|
|
bless $self, $class;
|
|
|
|
$self->{'level'} = $params{'level'} || 'error';
|
|
|
|
return $self;
|
|
}
|
|
|
|
sub set_level {
|
|
my $self = shift;
|
|
my ($new_level) = @_;
|
|
|
|
croak('Unknown log level')
|
|
unless first { $new_level eq $_ } keys %$LEVELS;
|
|
|
|
$self->{'level'} = $new_level;
|
|
|
|
return;
|
|
}
|
|
|
|
sub level {
|
|
my $self = shift;
|
|
|
|
return $self->{level} || 'error';
|
|
}
|
|
|
|
sub log { return shift->_log( shift, @_) }
|
|
sub info { return shift->_log( 'info', @_ ) }
|
|
sub error { return shift->_log( 'error', @_ ) }
|
|
sub warn { return shift->_log( 'warn', @_ ) }
|
|
sub debug { return shift->_log( 'debug', @_ ) }
|
|
sub trace { return shift->_log( 'trace', @_ ) }
|
|
|
|
sub _log {
|
|
my $self = shift;
|
|
my $level = shift;
|
|
my $message = shift;
|
|
|
|
return if $LEVELS->{$level} > $LEVELS->{ $self->{'level'} };
|
|
|
|
my $time = Time::Moment->now->strftime('%Y-%m-%d %T%3f');
|
|
|
|
my $text = sprintf("%s [%s] %s\n", $time, $level, $message);
|
|
$text = sprintf($text, @_) if (@_);
|
|
|
|
$self->_print($text);
|
|
|
|
return;
|
|
}
|
|
|
|
sub _print { croak 'Not implemented!' }
|
|
|
|
1;
|