From 66ffdf9bce6ef1b3f5b4252eedb01538f114ba8e Mon Sep 17 00:00:00 2001 From: Matthew Vernon Date: Tue, 15 Apr 2014 16:53:15 +0100 Subject: [PATCH] Reverse the contents of log files Use "tac" to reverse files, meaning the logs are now output neatly in reverse-chronological order. The existing code tried to read everything in $webstump_home/.. ; we now only try and open errs files; this involves changing the guard condition to 0 from undef (since forwards * undef isn't undef). --- webstump/scripts/html_output.pl | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/webstump/scripts/html_output.pl b/webstump/scripts/html_output.pl index 5503b4a..6ee3295 100644 --- a/webstump/scripts/html_output.pl +++ b/webstump/scripts/html_output.pl @@ -640,22 +640,24 @@ sub scanlogs ($$$) { my $num= sub { local ($_) = @_; return $forwards * ( - m/^errs$/ ? -1 : - m/^errs\.(\d+)(?:\.gz$)$/ ? $1 : - undef + m/^errs$/ ? 1 : + m/^errs\.(\d+)(?:\.gz$)$/ ? ($1+2) : + 0 ); }; foreach my $leaf ( sort { $num->($a) <=> $num->($b) } - grep { defined $num->($_) } + grep { $num->($_) } readdir LOGSDIR ) { my $file= "$dir/$leaf"; - if ($file =~ m/\.gz$/) { - open LOGFILE, "zcat $file |" or die "zcat $file $!"; + if ($file =~ m/\/errs.*\.gz$/) { + open LOGFILE, "zcat $file | tac |" or die "zcat $file | tac $!"; + } elsif ($file =~ /errs/) { + open LOGFILE, "tac $file |" or die "tac $file $!"; } else { - open LOGFILE, "< $file" or die "$file $!"; - } + die "Unexpected filename in scanlogs: $file"; + } while () { my $tgot= $callback->(); next unless $tgot; -- 2.30.2