diff options
Diffstat (limited to 'lib/MON/Syslogger.pm')
| -rw-r--r-- | lib/MON/Syslogger.pm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/MON/Syslogger.pm b/lib/MON/Syslogger.pm new file mode 100644 index 0000000..9292085 --- /dev/null +++ b/lib/MON/Syslogger.pm @@ -0,0 +1,77 @@ +package MON::Syslogger; + +use strict; +use warnings; +use v5.10; +use autodie; + +use Unix::Syslog qw(:macros :subs); +use Scalar::Util qw(looks_like_number); + +sub new { + my ( $class, %opts ) = @_; + + my $self = bless \%opts, $class; + + $self->init(); + + return $self; +} + +sub init { + my ($self) = @_; + + my $options = $self->{options}; + $options->store($self); + + if ( exists $self->{syslog} && $self->{syslog} ne '0' ) { + $self->{enable} = 1; + + } + elsif ( exists $ENV{MON_SYSLOG} && $ENV{MON_SYSLOG} ne '0' ) { + $self->{enable} = 1; + + } + else { + $self->{enable} = 0; + } + + return undef; +} + +sub logg { + my ( $self, $level, @msgs ) = @_; + + return undef unless $self->{enable}; + + openlog $0, LOG_PID, LOG_LOCAL0; + + s/\n/ /g for @msgs; + + given ($level) { + when ('debug') { + syslog LOG_DEBUG, $_ for @msgs; + } + when ('warning') { + syslog LOG_WARNING, $_ for @msgs; + } + when ('error') { + syslog LOG_ERR, $_ for @msgs; + } + when ('notice') { + syslog LOG_NOTICE, $_ for @msgs; + } + when ('info') { + syslog LOG_INFO, $_ for @msgs; + } + default { + $self->logg( 'info', @msgs ) + } + } + + closelog + + return undef; +} + +1; |
