You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2019/06/07 08:25:30 UTC
svn commit: r1860741 - /spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
Author: hege
Date: Fri Jun 7 08:25:30 2019
New Revision: 1860741
URL: http://svn.apache.org/viewvc?rev=1860741&view=rev
Log:
Suppress duplicate log lines
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm?rev=1860741&r1=1860740&r2=1860741&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm Fri Jun 7 08:25:30 2019
@@ -61,6 +61,10 @@ my %log_level = (
# global shared object
our %LOG_SA;
our $LOG_ENTERED; # to avoid recursion on die or warn from within logging
+# duplicate message line suppressor
+our $LOG_DUPMIN = 10; # only start suppressing after x duplicate lines
+our $LOG_DUPLINE = ''; # remembers last log line
+our $LOG_DUPCNT = 0; # counts duplicates
# defaults
$LOG_SA{level} = WARNING; # log info, warnings and errors
@@ -168,6 +172,25 @@ sub log_message {
my $message = join(" ", @message);
$message =~ s/[\r\n]+$//; # remove any trailing newlines
+ # suppress duplicate loglines
+ if ($message eq $LOG_DUPLINE) {
+ $LOG_DUPCNT++;
+ # only start suppressing after x identical lines
+ if ($LOG_DUPCNT >= $LOG_DUPMIN) {
+ $LOG_ENTERED = 0;
+ return;
+ }
+ } else {
+ if ($LOG_DUPCNT >= $LOG_DUPMIN) {
+ $LOG_DUPCNT -= $LOG_DUPMIN - 1;
+ while (my ($name, $object) = each %{ $LOG_SA{method} }) {
+ $object->log_message($level, "--- last message repeated $LOG_DUPCNT times ---");
+ }
+ }
+ $LOG_DUPCNT = 0;
+ $LOG_DUPLINE = $message;
+ }
+
# split on newlines and call log_message multiple times; saves
# the subclasses having to understand multi-line logs
my $first = 1;