Skip to content

Commit

Permalink
Add is_level method to Mojo::Log and deprecate level specific is_* me…
Browse files Browse the repository at this point in the history
…thods
  • Loading branch information
kraih committed Feb 19, 2016
1 parent d3bb456 commit 29dbd85
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 50 deletions.
3 changes: 3 additions & 0 deletions Changes
@@ -1,5 +1,8 @@

6.47 2016-02-19
- Deprecated Mojo::Log::is_debug, Mojo::Log::is_error, Mojo::Log::is_info and
Mojo::Log::is_warn in favor of Mojo::Log::is_level.
- Added is_level method to Mojo::Log.
- Fixed datetime_field helper to use the correct type attribute value.

6.46 2016-02-13
Expand Down
45 changes: 15 additions & 30 deletions lib/Mojo/Log.pm
Expand Up @@ -3,7 +3,7 @@ use Mojo::Base 'Mojo::EventEmitter';

use Carp 'croak';
use Fcntl ':flock';
use Mojo::Util 'encode';
use Mojo::Util qw(deprecated encode monkey_patch);

has format => sub { \&_format };
has handle => sub {
Expand All @@ -21,7 +21,15 @@ has max_history_size => 10;
has 'path';

# Supported log levels
my $LEVEL = {debug => 1, info => 2, warn => 3, error => 4, fatal => 5};
my %LEVEL = (debug => 1, info => 2, warn => 3, error => 4, fatal => 5);

# DEPRECATED in Clinking Beer Mugs!
for my $name (qw(debug error info warn)) {
monkey_patch __PACKAGE__, "is_$name", sub {
deprecated "Mojo::Log::$name is DEPRECATED in favor of Mojo::Log::is_level";
shift->is_level($name);
};
}

sub append {
my ($self, $msg) = @_;
Expand All @@ -37,10 +45,7 @@ sub error { shift->_log(error => @_) }
sub fatal { shift->_log(fatal => @_) }
sub info { shift->_log(info => @_) }

sub is_debug { shift->_now('debug') }
sub is_error { shift->_now('error') }
sub is_info { shift->_now('info') }
sub is_warn { shift->_now('warn') }
sub is_level { $LEVEL{pop()} >= $LEVEL{$ENV{MOJO_LOG_LEVEL} || shift->level} }

sub new {
my $self = shift->SUPER::new(@_);
Expand All @@ -59,7 +64,7 @@ sub _log { shift->emit('message', shift, @_) }
sub _message {
my ($self, $level) = (shift, shift);

return unless $self->_now($level);
return unless $self->is_level($level);

my $max = $self->max_history_size;
my $history = $self->history;
Expand All @@ -69,8 +74,6 @@ sub _message {
$self->append($self->format->(@$msg));
}

sub _now { $LEVEL->{pop()} >= $LEVEL->{$ENV{MOJO_LOG_LEVEL} || shift->level} }

1;

=encoding utf8
Expand Down Expand Up @@ -212,29 +215,11 @@ Emit L</"message"> event and log C<fatal> message.
Emit L</"message"> event and log C<info> message.
=head2 is_debug
my $bool = $log->is_debug;
Check if C<debug> log level is active.
=head2 is_error
my $bool = $log->is_error;
Check if C<error> log level is active.
=head2 is_info
my $bool = $log->is_info;
Check if C<info> log level is active.
=head2 is_warn
=head2 is_level
my $bool = $log->is_warn;
my $bool = $log->is_level('debug');
Check if C<warn> log level is active.
Check log L</"level">.
=head2 new
Expand Down
40 changes: 20 additions & 20 deletions t/mojo/log.t
Expand Up @@ -102,37 +102,37 @@ ok !$history->[2], 'no more messages';

# "debug"
is $log->level('debug')->level, 'debug', 'right level';
ok $log->is_debug, '"debug" log level is active';
ok $log->is_info, '"info" log level is active';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok $log->is_level('debug'), '"debug" log level is active';
ok $log->is_level('info'), '"info" log level is active';
ok $log->is_level('warn'),, '"warn" log level is active';
ok $log->is_level('error'), '"error" log level is active';

# "info"
is $log->level('info')->level, 'info', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok $log->is_info, '"info" log level is active';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok $log->is_level('info'), '"info" log level is active';
ok $log->is_level('warn'),, '"warn" log level is active';
ok $log->is_level('error'), '"error" log level is active';

# "warn"
is $log->level('warn')->level, 'warn', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok $log->is_warn, '"warn" log level is active';
ok $log->is_error, '"error" log level is active';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok !$log->is_level('info'), '"info" log level is inactive';
ok $log->is_level('warn'),, '"warn" log level is active';
ok $log->is_level('error'), '"error" log level is active';

# "error"
is $log->level('error')->level, 'error', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok !$log->is_warn, '"warn" log level is inactive';
ok $log->is_error, '"error" log level is active';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok !$log->is_level('info'), '"info" log level is inactive';
ok !$log->is_level('warn'), '"warn" log level is inactive';
ok $log->is_level('error'), '"error" log level is active';

# "fatal"
is $log->level('fatal')->level, 'fatal', 'right level';
ok !$log->is_debug, '"debug" log level is inactive';
ok !$log->is_info, '"info" log level is inactive';
ok !$log->is_warn, '"warn" log level is inactive';
ok !$log->is_error, '"error" log level is inactive';
ok !$log->is_level('debug'), '"debug" log level is inactive';
ok !$log->is_level('info'), '"info" log level is inactive';
ok !$log->is_level('warn'),, '"warn" log level is inactive';
ok !$log->is_level('error'), '"error" log level is inactive';

done_testing();

0 comments on commit 29dbd85

Please sign in to comment.