You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.0 KiB
42 lines
1.0 KiB
package Lemonldap::NG::Common::Logger::Dispatch;
|
|
|
|
use strict;
|
|
|
|
our $VERSION = '2.0.0';
|
|
|
|
sub new {
|
|
no warnings 'redefine';
|
|
my $self = bless {}, shift;
|
|
my ( $conf, %args ) = @_;
|
|
my %bck;
|
|
my $last;
|
|
my $show = 1;
|
|
my $root = $args{user} ? 'userLogDispatch' : 'logDispatch';
|
|
unless ( $conf->{ $root . 'Error' } ) {
|
|
die "At least, ${root}Error must be defined in conf";
|
|
}
|
|
foreach my $l (qw(error warn notice info debug)) {
|
|
if ($show) {
|
|
$last = $conf->{ $root . ucfirst($l) } || $last;
|
|
unless ( $bck{$last} ) {
|
|
eval "require $last";
|
|
die $@ if ($@);
|
|
$bck{$last} = $last->new(@_);
|
|
}
|
|
my $obj = $bck{$last};
|
|
eval "sub $l {
|
|
shift;
|
|
return \$obj->$l(\@_);
|
|
}";
|
|
}
|
|
else {
|
|
eval qq'sub $l {1}';
|
|
}
|
|
$show = 0 if ( $conf->{logLevel} eq $l );
|
|
|
|
}
|
|
die "unknown level $conf->{logLevel}" if ($show);
|
|
return $self;
|
|
}
|
|
|
|
1;
|
|
|