summaryrefslogtreecommitdiff
path: root/lib/MON/Syslogger.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MON/Syslogger.pm')
-rw-r--r--lib/MON/Syslogger.pm77
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;