summaryrefslogtreecommitdiff
path: root/lib/PerlDaemon/ThreadedLogger.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PerlDaemon/ThreadedLogger.pm')
-rw-r--r--lib/PerlDaemon/ThreadedLogger.pm45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/PerlDaemon/ThreadedLogger.pm b/lib/PerlDaemon/ThreadedLogger.pm
new file mode 100644
index 0000000..a5a7776
--- /dev/null
+++ b/lib/PerlDaemon/ThreadedLogger.pm
@@ -0,0 +1,45 @@
+package PerlDaemon::ThreadedLogger;
+
+use strict;
+use warnings;
+
+$| = 1;
+
+sub new ($$) {
+ my ($class, $conf) = @_;
+ my $self = $SELF = bless { conf => $conf }, $class;
+
+ return $self;
+}
+
+sub _pushmsg ($$) {
+ my ($self, $msg) = @_;
+ my $conf = $self->{conf};
+ my $msgqueue = $conf->{msgqueue};
+
+ push @$msgqueue, $msg;
+}
+
+sub logmsg ($$) {
+ my ($self, $msg) = @_;
+
+ my $logline = localtime()." (PID $$): $msg\n";
+ $self->_pushmsg($logline);
+
+ return undef;
+}
+
+sub err ($$) {
+ my ($self, $msg) = @_;
+ $self->logmsg($msg);
+ die "$msg\n";
+}
+
+sub warn ($$) {
+ my ($self, $msg) = @_;
+ $self->logmsg("WARNING: $msg");
+
+ return undef;
+}
+
+1;