Heiko Schlittermann hs@schlittermann.de (Di 11 Jan 2011 16:45:17 CET):
Björn Abheiden b.abheiden@ba-webdesign.com (Di 11 Jan 2011 16:22:35 CET):
Hallo Liste,
wie kann ich mir die Log-Einträge der vergangenen 60 Minuten anzeigen lassen. Die Zeilen der Protokolldatei fangen z.B. mit "2011-01-11 16:17:48,542 INFO ..." an. Bisher habe ich mir mit 'date' die letzte Stunde ausgeben lassen und die Minuten verworfen. Jedoch ist mir das zu ungenau.
In Shell?
Alternativ (das würde sogar bei vielen Logfiles nur die passenden Zeilen raussuchen):
#! /usr/bin/perl use strict; use warnings; use Date::Parse;
my $time0 = time - 3600;
while (<>) { next if not /^(\S+\s+\d?\d\s+\d?\d:\d\d:\d\d)\s/; next if str2time($_) < $time0; print; }
Wenn es nur ein (Singular) Logfile wäre, dann vielleicht analog zur Logik im Shellscript:
#! /usr/bin/perl use strict; use warnings; use Date::Parse; die "Please use STDIN or only one file name!" if @ARGV > 1; my $time0 = time - 3600; while (<>) { last if /^(…)/ and str2time($1) >= 0; } print while <>;