[PATCH] improved readability of default logging logic

[email protected] (Matt Simerson)
Newsgroups perl.qpsmtpd
Message-ID <[email protected]>
---
lib/Qpsmtpd.pm       |   30 ++++++++++++++++++------------
plugins/logging/warn |   17 +++++++++--------
2 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/lib/Qpsmtpd.pm b/lib/Qpsmtpd.pm
index dbbd2a0..5d23211 100644
--- a/lib/Qpsmtpd.pm
+++ b/lib/Qpsmtpd.pm
@@ -125,17 +125,18 @@ sub varlog {

  $self->load_logging; # in case we don't have this loaded yet

-  my ($rc) = $self->run_hooks_no_respond("logging", $trace, $hook, $plugin, @log);
-
-  unless ( $rc and $rc == DECLINED or $rc == OK ) {
-    # no logging plugins registered so fall back to STDERR
-    warn join(" ", $$ .
-      (defined $plugin && defined $hook ? " $plugin plugin ($hook):" :
-       defined $plugin ? " $plugin plugin:" :
-       defined $hook   ? " running plugin ($hook):" : ""),
-      @log), "\n"
-    if $trace <= $TraceLevel;
-  }
+    my ($rc) = $self->run_hooks_no_respond("logging", $trace, $hook, $plugin, @log)
+        or return;
+
+    return if $rc == DECLINED || $rc == OK;  # plugin success
+    return if $trace > $TraceLevel;
+
+    # no logging plugins registered, fall back to STDERR
+    my $prefix = defined $plugin && defined $hook ? " $plugin plugin ($hook):" :
+                 defined $plugin ? " $plugin plugin:" :
+                 defined $hook   ? " running plugin ($hook):" : '';
+
+    warn join(' ', $$ . $prefix, @log), "\n";
}

sub clear_config_cache {
@@ -415,6 +416,9 @@ sub transaction { return {}; } # base class implements empty transaction

sub run_hooks {
  my ($self, $hook) = (shift, shift);
+#if ( $hook =~ /^auth/i ) {
+#warn sprintf( "run_hooks called by %s, %s, %s\n", (caller) );
+#};
  if ($hooks->{$hook}) {
    my @r;
    my @local_hooks = @{$hooks->{$hook}};
@@ -515,7 +519,9 @@ sub hook_responder {
  my ($self, $hook, $msg, $args) = @_;

  #my $t1 = $SAMPLER->("hook_responder", undef, 1);
-
+#if ( $hook =~ /^auth/i ) {
+#warn sprintf( "hook_responder called by %s, %s, %s\n", (caller) );
+#};
  my $code = shift @$msg;

  my $responder = $hook . '_respond';
diff --git a/plugins/logging/warn b/plugins/logging/warn
index 204ffdb..d62997b 100644
--- a/plugins/logging/warn
+++ b/plugins/logging/warn
@@ -28,16 +28,17 @@ sub hook_logging {
  # Don't log your own log entries!  If this is the only logging plugin
  # then these lines will not be logged at all.  You can safely comment
  # out this line and it will not cause an infinite loop.
-  return DECLINED if defined $plugin and $plugin eq $self->plugin_name; 
+    return DECLINED if defined $plugin && $plugin eq $self->plugin_name;

-  warn 
-    join(" ", $$ .
-         (defined $plugin ? " $plugin plugin:" :
-          defined $hook   ? " running plugin ($hook):"  : ""),
-         @log), "\n"
-    if ($trace <= $self->{_level});
+    return DECLINED if $trace > $self->{_level};

-  return DECLINED;
+    my $prefix = defined $plugin && defined $hook ? " $plugin plugin ($hook):" :
+                 defined $plugin ? " $plugin plugin:" :
+                 defined $hook   ? " running plugin ($hook):" : ''),
+
+    warn join(' ', $$ . $prefix, @log), "\n";
+
+    return DECLINED;
}

=head1 NAME
-- 
1.7.9.6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.