summaryrefslogtreecommitdiff
path: root/lib/Log/Log4perl/Filter/LevelRange.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Log/Log4perl/Filter/LevelRange.pm')
-rw-r--r--lib/Log/Log4perl/Filter/LevelRange.pm126
1 files changed, 126 insertions, 0 deletions
diff --git a/lib/Log/Log4perl/Filter/LevelRange.pm b/lib/Log/Log4perl/Filter/LevelRange.pm
new file mode 100644
index 0000000..4e8107b
--- /dev/null
+++ b/lib/Log/Log4perl/Filter/LevelRange.pm
@@ -0,0 +1,126 @@
+##################################################
+package Log::Log4perl::Filter::LevelRange;
+##################################################
+
+use 5.006;
+
+use strict;
+use warnings;
+
+use Log::Log4perl::Level;
+use Log::Log4perl::Config;
+use Log::Log4perl::Util qw( params_check );
+
+use constant _INTERNAL_DEBUG => 0;
+
+use base "Log::Log4perl::Filter";
+
+##################################################
+sub new {
+##################################################
+ my ($class, %options) = @_;
+
+ my $self = { LevelMin => 'DEBUG',
+ LevelMax => 'FATAL',
+ AcceptOnMatch => 1,
+ %options,
+ };
+
+ params_check( $self,
+ [ qw( LevelMin LevelMax ) ],
+ [ qw( name AcceptOnMatch ) ]
+ );
+
+ $self->{AcceptOnMatch} = Log::Log4perl::Config::boolean_to_perlish(
+ $self->{AcceptOnMatch});
+
+ bless $self, $class;
+
+ return $self;
+}
+
+##################################################
+sub ok {
+##################################################
+ my ($self, %p) = @_;
+
+ if(Log::Log4perl::Level::to_priority($self->{LevelMin}) <=
+ Log::Log4perl::Level::to_priority($p{log4p_level}) and
+ Log::Log4perl::Level::to_priority($self->{LevelMax}) >=
+ Log::Log4perl::Level::to_priority($p{log4p_level})) {
+ return $self->{AcceptOnMatch};
+ } else {
+ return ! $self->{AcceptOnMatch};
+ }
+}
+
+1;
+
+__END__
+
+=encoding utf8
+
+=head1 NAME
+
+Log::Log4perl::Filter::LevelRange - Filter for a range of log levels
+
+=head1 SYNOPSIS
+
+ log4perl.filter.Match1 = Log::Log4perl::Filter::LevelRange
+ log4perl.filter.Match1.LevelMin = INFO
+ log4perl.filter.Match1.LevelMax = ERROR
+ log4perl.filter.Match1.AcceptOnMatch = true
+
+=head1 DESCRIPTION
+
+This Log4perl custom filter checks if the current message
+has a priority matching a predefined range.
+The C<LevelMin> and C<LevelMax> parameters define the levels
+(choose from C<DEBUG>, C<INFO>, C<WARN>, C<ERROR>, C<FATAL>) marking
+the window of allowed messages priorities.
+
+C<LevelMin> defaults to C<DEBUG>, and C<LevelMax> to C<FATAL>.
+
+The additional parameter C<AcceptOnMatch> defines if the filter
+is supposed to pass or block the message (C<true> or C<false>).
+
+=head1 SEE ALSO
+
+L<Log::Log4perl::Filter>,
+L<Log::Log4perl::Filter::Boolean>,
+L<Log::Log4perl::Filter::LevelMatch>,
+L<Log::Log4perl::Filter::MDC>,
+L<Log::Log4perl::Filter::StringMatch>
+
+=head1 LICENSE
+
+Copyright 2002-2013 by Mike Schilli E<lt>m@perlmeister.comE<gt>
+and Kevin Goess E<lt>cpan@goess.orgE<gt>.
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=head1 AUTHOR
+
+Please contribute patches to the project on Github:
+
+ http://github.com/mschilli/log4perl
+
+Send bug reports or requests for enhancements to the authors via our
+
+MAILING LIST (questions, bug reports, suggestions/patches):
+log4perl-devel@lists.sourceforge.net
+
+Authors (please contact them via the list above, not directly):
+Mike Schilli <m@perlmeister.com>,
+Kevin Goess <cpan@goess.org>
+
+Contributors (in alphabetical order):
+Ateeq Altaf, Cory Bennett, Jens Berthold, Jeremy Bopp, Hutton
+Davidson, Chris R. Donnelly, Matisse Enzer, Hugh Esco, Anthony
+Foiani, James FitzGibbon, Carl Franks, Dennis Gregorovic, Andy
+Grundman, Paul Harrington, Alexander Hartmaier David Hull,
+Robert Jacobson, Jason Kohles, Jeff Macdonald, Markus Peter,
+Brett Rann, Peter Rabbitson, Erik Selberg, Aaron Straup Cope,
+Lars Thegler, David Viner, Mac Yang.
+