in reply to Snort output; report changes only?

you may be wanting to do something like this:


use File::Tail;
my $fh = new File::Tail ('/var/log/mylog.log', #other params
) || die "can't find logfile";

my $report_every = (5 * 60);   # email every 5 minutes
my $last = now;                # 5 minutes before first report

while (<$fh>) {
  gather_statistics($_);
  if ( (now - $last_report) > $report_every ) {
     email_report();
     reset_counters();
     $last = now;
  }
}

File::Tail will take care of log rotation. This can run as a daemon, watch all the stuff from the log line at a time, and report every so often. I've used something similar to monitor router logs. Be prepared for lot's of email.

Snort does have the ability to log to syslog or a UNIX Socket which might suit your needs.

If you're looking for *changes* (not additions) to the logs, diff is the answer.