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 16:38:03 UTC

svn commit: r1860781 - in /spamassassin/trunk/lib/Mail/SpamAssassin: Logger.pm Logger/File.pm Logger/Stderr.pm Logger/Syslog.pm

Author: hege
Date: Fri Jun  7 16:38:03 2019
New Revision: 1860781

URL: http://svn.apache.org/viewvc?rev=1860781&view=rev
Log:
Log correct timestamp for last suppressed duplicate. As a bonus makes all Loggers log the exact same time for the same line.

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Logger/File.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Syslog.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm?rev=1860781&r1=1860780&r2=1860781&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger.pm Fri Jun  7 16:38:03 2019
@@ -41,6 +41,7 @@ use warnings;
 use re 'taint';
 
 use Exporter ();
+use Time::HiRes ();
 
 our @ISA = qw(Exporter);
 our @EXPORT = qw(dbg info would_log);
@@ -64,6 +65,7 @@ our $LOG_ENTERED;  # to avoid recursion
 # duplicate message line suppressor
 our $LOG_DUPMIN = 10; # only start suppressing after x duplicate lines
 our $LOG_DUPLINE = ''; # remembers last log line
+our $LOG_DUPTIME; # remembers last log line timestamp
 our $LOG_DUPCNT = 0; # counts duplicates
 
 # defaults
@@ -172,9 +174,12 @@ sub log_message {
   my $message = join(" ", @message);
   $message =~ s/[\r\n]+$//;		# remove any trailing newlines
 
+  my $now = Time::HiRes::time;
+
   # suppress duplicate loglines
   if ($message eq $LOG_DUPLINE) {
     $LOG_DUPCNT++;
+    $LOG_DUPTIME = $now;
     # only start suppressing after x identical lines
     if ($LOG_DUPCNT >= $LOG_DUPMIN) {
       $LOG_ENTERED = 0;
@@ -184,7 +189,7 @@ sub log_message {
     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 ---");
+        $object->log_message($level, "--- last message repeated $LOG_DUPCNT times ---", $LOG_DUPTIME);
       }
     }
     $LOG_DUPCNT = 0;
@@ -205,7 +210,7 @@ sub log_message {
       $line =~ s/^([^:]+?):/$1: [...]/;
     }
     while (my ($name, $object) = each %{ $LOG_SA{method} }) {
-      $object->log_message($level, $line);
+      $object->log_message($level, $line, $now);
     }
   }
   $LOG_ENTERED = 0;

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger/File.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger/File.pm?rev=1860781&r1=1860780&r2=1860781&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger/File.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger/File.pm Fri Jun  7 16:38:03 2019
@@ -87,16 +87,17 @@ sub init {
 }
 
 sub log_message {
-  my ($self, $level, $msg) = @_;
+  my ($self, $level, $msg, $ts) = @_;
 
   my $timestamp;
   my $fmt = $self->{timestamp_fmt};
+  my $now = defined $ts ? $ts : Time::HiRes::time;
   if (!defined $fmt) {
-    $timestamp = scalar localtime;  # default, backward compatibility
+    $timestamp = scalar localtime($now);  # default, backward compatibility
   } elsif ($fmt eq '') {
     $timestamp = '';
   } else {
-    $timestamp = POSIX::strftime($fmt, localtime(Time::HiRes::time));
+    $timestamp = POSIX::strftime($fmt, localtime($now));
   }
   $timestamp .= ' '  if $timestamp ne '';
 

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm?rev=1860781&r1=1860780&r2=1860781&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Stderr.pm Fri Jun  7 16:38:03 2019
@@ -64,13 +64,13 @@ sub new {
 }
 
 sub log_message {
-  my ($self, $level, $msg) = @_;
+  my ($self, $level, $msg, $ts) = @_;
 
   my $timestamp;
   my $fmt = $self->{timestamp_fmt};
+  my $now = defined $ts ? $ts : Time::HiRes::time;
   if (!defined $fmt) {
     # default since 3.3.0
-    my $now = Time::HiRes::time;
     my $datetime = POSIX::strftime("%b %d %H:%M", localtime($now));
     utf8::encode($datetime)  if utf8::is_utf8($datetime);  # Bug 7305
     $timestamp = sprintf("%s:%06.3f", $datetime, $now-int($now/60)*60);
@@ -79,7 +79,7 @@ sub log_message {
   } elsif ($fmt eq '') {
     $timestamp = '';
   } else {
-    $timestamp = POSIX::strftime($fmt, localtime(Time::HiRes::time));
+    $timestamp = POSIX::strftime($fmt, localtime($now));
   }
   $timestamp .= ' '  if $timestamp ne '';
 

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Syslog.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Syslog.pm?rev=1860781&r1=1860780&r2=1860781&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Syslog.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Logger/Syslog.pm Fri Jun  7 16:38:03 2019
@@ -137,7 +137,7 @@ sub init {
 }
 
 sub log_message {
-  my ($self, $level, $msg) = @_;
+  my ($self, $level, $msg, $ts) = @_;
 
   return if $self->{disabled};
 
@@ -160,7 +160,8 @@ sub log_message {
   my $timestamp = '';
   my $fmt = $self->{timestamp_fmt};
   if (defined $fmt && $fmt ne '') {  # for completeness, rarely used
-    $timestamp = POSIX::strftime($fmt, localtime(Time::HiRes::time));
+    my $now = defined $ts ? $ts : Time::HiRes::time;
+    $timestamp = POSIX::strftime($fmt, localtime($now));
   }
   $msg = $timestamp . ' ' . $msg  if $timestamp ne '';