Show
Ignore:
Timestamp:
03/26/07 21:21:54 (7 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1174944114 +0000
git-parent:

[5c7fb414bc39199cd1989b3f7adba3a0ef1c8f04]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1174944114 +0000
Message:

update the file watcher module

git-svn-id: https://labs.omniti.com/resmon/trunk@36 8c0face9-b7db-6ec6-c4b3-d5f7145c7d55

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lib/Resmon/Module.pm

    rae5283c r9e27991  
    118118  my $file = $arg->{'object'}; 
    119119  my $match = $arg->{'match'}; 
    120   my $errors; 
    121   my $errorcount = 0; 
    122   my $start = 0; 
     120  my $max = $arg->{'max'} || 8; 
    123121  my @statinfo = stat($file); 
    124   if($logfile_stats{$file}) { 
    125     my($dev, $ino, $size, $errs) = split(/-/, $logfile_stats{$file}); 
    126     if(($dev == $statinfo[0]) && ($ino == $statinfo[1])) { 
    127       if($size == $statinfo[7]) { 
    128         return $arg->set_status("OK($errs)"); 
     122  if(exists($arg->{file_dev})) {  
     123    if(($arg->{file_dev} == $statinfo[0]) && 
     124       ($arg->{file_ino} == $statinfo[1])) { 
     125      if($arg->{lastsize} == $statinfo[7]) { 
     126        if($arg->{errors}) { 
     127          return $arg->set_status("BAD($arg->{nerrs}: $arg->{errors})"); 
     128        } 
     129        return $arg->set_status("OK(0)"); 
    129130      } 
    130       $start = $size; 
    131       $errorcount = $errs; 
    132     } 
    133   } 
    134   $logfile_stats{$file} = "$statinfo[0]-$statinfo[1]-$statinfo[7]-$errorcount"; 
     131    } else { 
     132      # File is a different file now 
     133      $arg->{lastsize} = 0; 
     134      $arg->{nerrs} = 0; 
     135      $arg->{errors} = ''; 
     136    } 
     137  } 
    135138  if(!open(LOG, "<$file")) { 
    136139    return $arg->set_status("BAD(ENOFILE)"); 
    137140  } 
    138   seek(LOG, $statinfo[7], 0); 
     141  seek(LOG, $arg->{lastsize}, 0); 
     142 
    139143  while(<LOG>) { 
    140144    chomp; 
    141145    if(/$match/) { 
    142       $errors .= $_; 
    143       $errorcount++; 
    144     } 
    145   } 
    146   if($errors) { 
    147     return $arg->set_status("BAD($errors)"); 
    148   } 
    149   return $arg->set_status("OK($errorcount)"); 
     146      if($arg->{nerrs} < $max) { 
     147        $arg->{errors} .= " " if(length($arg->{errors})); 
     148        $arg->{errors} .= $_; 
     149      } 
     150      $arg->{nerrs}++; 
     151    } 
     152  } 
     153 
     154  # Remember where we were 
     155  $arg->{file_dev} = $statinfo[0]; 
     156  $arg->{file_ino} = $statinfo[1]; 
     157  $arg->{lastsize} = $statinfo[7]; 
     158 
     159  if($arg->{nerrs}) { 
     160    return $arg->set_status("BAD($arg->{nerrs}: $arg->{errors})"); 
     161  } 
     162  return $arg->set_status("OK(0)"); 
    150163} 
    151164