Syslog.pm 996 Bytes
Newer Older
Yadd's avatar
Yadd committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
package Lemonldap::NG::Common::Logger::Syslog;

use strict;
use Sys::Syslog qw(:standard);

sub new {
    my ( $class, $conf, %args ) = @_;
    my $level = $conf->{logLevel} || 'info';
    my $self = bless {}, $class;
    if ( $args{user} ) {
        $self->{facility} = $conf->{userSyslogFacility} || 'auth';
    }
    else {
        $self->{facility} = $conf->{syslogFacility} || 'daemon';
    }
16
    eval { openlog( 'LLNG', 'cons,pid,ndelay', $self->{facility} ) };
Yadd's avatar
Yadd committed
17 18 19 20 21 22
    no warnings 'redefine';
    my $show = 1;
    foreach (qw(error warn notice info debug)) {
        if ($show) {
            my $name = $_;
            $name = 'warning' if ( $_ eq 'warn' );
23 24
            $name = 'err'     if ( $_ eq 'error' );
            eval qq'sub $_ {syslog("$name|".\$_[0]->{facility},\$_[1])}';
Yadd's avatar
Yadd committed
25
            die $@ if ($@);
Yadd's avatar
Yadd committed
26 27 28 29 30 31 32 33 34 35 36
        }
        else {
            eval qq'sub $_ {1}';
        }
        $show = 0 if ( $level eq $_ );
    }
    die "unknown level $level" if ($show);
    return $self;
}

1;