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

44 lines
1.2 KiB
Perl
Raw Normal View History

2017-02-13 17:48:39 +01:00
package Lemonldap::NG::Common::Logger::Syslog;
use strict;
use Sys::Syslog qw(:standard);
2022-07-28 12:42:15 +02:00
our $VERSION = '2.0.15';
2017-02-28 21:53:19 +01:00
2017-02-13 17:48:39 +01:00
sub new {
my ( $class, $conf, %args ) = @_;
my $level = $conf->{logLevel} || 'info';
2019-07-02 20:03:40 +02:00
my $self = bless {}, $class;
2017-02-13 17:48:39 +01:00
if ( $args{user} ) {
$self->{facility} = $conf->{userSyslogFacility} || 'auth';
$self->{options} = $conf->{userSyslogOptions} || 'cons,pid,ndelay';
2017-02-13 17:48:39 +01:00
}
else {
$self->{facility} = $conf->{syslogFacility} || 'daemon';
$self->{options} = $conf->{syslogOptions} || 'cons,pid,ndelay';
2017-02-13 17:48:39 +01:00
}
eval { openlog( 'LLNG', $self->{options}, $self->{facility} ) };
2017-02-13 17:48:39 +01:00
no warnings 'redefine';
my $show = 1;
2022-06-20 00:10:57 +02:00
2017-02-13 17:48:39 +01:00
foreach (qw(error warn notice info debug)) {
if ($show) {
my $name = $_;
$name = 'warning' if ( $_ eq 'warn' );
$name = 'err' if ( $_ eq 'error' );
2019-05-16 20:42:31 +02:00
eval
qq'sub $_ {syslog("$name|".\$_[0]->{facility},"[$_] ". \$_[1])}';
2017-02-15 07:41:50 +01:00
die $@ if ($@);
2017-02-13 17:48:39 +01:00
}
else {
eval qq'sub $_ {1}';
}
$show = 0 if ( $level eq $_ );
}
2022-06-20 00:10:57 +02:00
die "Unknown logLevel $level" if $show;
2022-06-23 12:12:25 +02:00
2017-02-13 17:48:39 +01:00
return $self;
}
1;