################################################## package Log::Log4perl::Filter::LevelRange; ################################################## use 5.006; use strict; use warnings; use Log::Log4perl::Level; use Log::Log4perl::Config; use constant _INTERNAL_DEBUG => 0; use base "Log::Log4perl::Filter"; ################################################## sub new { ################################################## my ($class, %options) = @_; my $self = { LevelMin => 'DEBUG', LevelMax => 'FATAL', AcceptOnMatch => 1, %options, }; $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__ =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 and C parameters define the levels (choose from C, C, C, C, C) marking the window of allowed messages priorities. The additional parameter C defines if the filter is supposed to pass or block the message (C or C). =head1 SEE ALSO L, L, L, L =head1 AUTHOR Mike Schilli, Elog4perl@perlmeister.comE, 2003 =cut