diff --git a/lib/Log/Log4perl/Tiny.pm b/lib/Log/Log4perl/Tiny.pm index ad1e8a8..520f9d8 100644 --- a/lib/Log/Log4perl/Tiny.pm +++ b/lib/Log/Log4perl/Tiny.pm @@ -323,10 +323,19 @@ BEGIN { no strict 'refs'; for my $name (qw( FATAL ERROR WARN INFO DEBUG TRACE )) { + + # create the ->level methods *{__PACKAGE__ . '::' . lc($name)} = sub { my $self = shift; return $self->log($$name, @_); }; + + # and it ->is_level methods + *{__PACKAGE__ . '::is_' . lc($name)} = sub { + return 0 if $_[0]->{level} == $DEAD || $$name > $_[0]->{level}; + return 1; + }; + } ## end for my $name (qw( FATAL ERROR WARN INFO DEBUG TRACE )) for my $name ( @@ -888,6 +897,20 @@ interface, but with lowercase method names: logging functions, each emits a log at the corresponding level; +=item C<< is_trace >> + +=item C<< is_debug >> + +=item C<< is_info >> + +=item C<< is_warn >> + +=item C<< is_error >> + +=item C<< is_fatal >> + +log level test functions, each returns the status of the corresponding level; + =item C<< always >> emit log whatever the configured logging level; diff --git a/t/04.object.t b/t/04.object.t index a805e01..ce05b20 100644 --- a/t/04.object.t +++ b/t/04.object.t @@ -2,7 +2,7 @@ use strict; use warnings; -use Test::More tests => 37; # last test to print +use Test::More tests => 73; # last test to print #use Test::More 'no_plan'; use Log::Log4perl::Tiny qw( :levels ); @@ -23,15 +23,18 @@ for my $i (0 .. $#names) { my $blocked = 1; for my $name (@names) { + my $isfunc = 'is_'.$name; $blocked = 0 if $name eq $current; if ($blocked) { log_is { $logger->$name("whatever $name") } '', "minimum level $current, nothing at $name level"; + is( $logger->$isfunc, 0, "is $name false"); } else { log_like { $logger->$name("whatever $name") } qr/whatever\ $name/mxs, "minimum level $current, something at $name level"; + is( $logger->$isfunc, 1, "is $name true"); } } ## end for my $name (@names) } ## end for my $i (0 .. $#names)