]> git.proxmox.com Git - pve-common.git/commitdiff
dump_logfile: add filter regex
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 18 Apr 2014 05:20:12 +0000 (07:20 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 18 Apr 2014 05:20:12 +0000 (07:20 +0200)
data/PVE/Tools.pm

index 7448183455f5a1c2e23bdccfc9fdffa0adaa0872..5b30aedbdbb40079e270236d2160c018c632f407 100644 (file)
@@ -932,7 +932,7 @@ sub split_args {
 }
 
 sub dump_logfile {
-    my ($filename, $start, $limit) = @_;
+    my ($filename, $start, $limit, $filter) = @_;
 
     my $lines = [];
     my $count = 0;
@@ -948,12 +948,25 @@ sub dump_logfile {
     $limit = 50 if !$limit;
 
     my $line;
-    while (defined($line = <$fh>)) {
-       next if $count++ < $start;
-       next if $limit <= 0;
-       chomp $line;
-       push @$lines, { n => $count, t => $line};
-       $limit--;
+
+    if ($filter) {
+       # duplicate code, so that we do not slow down normal path
+       while (defined($line = <$fh>)) {
+           next if $line !~ m/$filter/;
+           next if $count++ < $start;
+           next if $limit <= 0;
+           chomp $line;
+           push @$lines, { n => $count, t => $line};
+           $limit--;
+       }
+    } else {
+       while (defined($line = <$fh>)) {
+           next if $count++ < $start;
+           next if $limit <= 0;
+           chomp $line;
+           push @$lines, { n => $count, t => $line};
+           $limit--;
+       }
     }
 
     close($fh);