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 '';