lemonldap-ng/lemonldap-ng-common/lib/Lemonldap/NG/Common/Logger/Syslog.pm

42 lines
1.2 KiB
Perl

package Lemonldap::NG::Common::Logger::Syslog;
use strict;
use Sys::Syslog qw(:standard);
our $VERSION = '2.1.0';
sub new {
my ( $class, $conf, %args ) = @_;
my $level = $conf->{logLevel} || 'info';
my $self = bless {}, $class;
if ( $args{user} ) {
$self->{facility} = $conf->{userSyslogFacility} || 'auth';
$self->{options} = $conf->{userSyslogOptions} || 'cons,pid,ndelay';
}
else {
$self->{facility} = $conf->{syslogFacility} || 'daemon';
$self->{options} = $conf->{syslogOptions} || 'cons,pid,ndelay';
}
eval { openlog( 'LLNG', $self->{options}, $self->{facility} ) };
no warnings 'redefine';
my $show = 1;
foreach (qw(error warn notice info debug)) {
if ($show) {
my $name = $_;
$name = 'warning' if ( $_ eq 'warn' );
$name = 'err' if ( $_ eq 'error' );
eval
qq'sub $_ {syslog("$name|".\$_[0]->{facility},"[$_] ". \$_[1])}';
die $@ if ($@);
}
else {
eval qq'sub $_ {1}';
}
$show = 0 if ( $level eq $_ );
}
die "unknown level $level" if ($show);
return $self;
}
1;