Domanda

Vorrei monitorare un file di registro scritto da un'applicazione.Voglio elaborare il file riga per riga così come, o subito dopo, è stato scritto.Non ho trovato un modo per rilevare che un file è stato esteso dopo aver raggiunto eof.

Il codice deve funzionare su Mac e PC e può essere in qualsiasi linguaggio, anche se ho maggiore familiarità con C++ e Perl.

Qualcuno ha un suggerimento sul modo migliore per farlo?

È stato utile?

Soluzione

In Perl, il File::Coda il modulo fa esattamente ciò di cui hai bisogno.

Altri suggerimenti

Una risposta abbastanza generica:

La maggior parte delle lingue, su EOF, restituisce che non sono stati letti dati.Puoi riprovare a leggere dopo un intervallo e, se da allora il file è cresciuto, questa volta il sistema operativo restituirà i dati.

L'essenza di tail -f è il seguente ciclo:

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;

IL cercare La chiamata è cancellare il flag EOF.

Dovresti essere in grado di leggere lo standard io da tail -f

Avrei pensato di emettere le azioni tramite tee e quindi di eseguire la coda (o utilizzare il loop Sopra) il file creato da tee some use.

Per Java vedere questo eccellente articolo

http://www.informit.com/guides/content.aspx?g=java&seqNum=226

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top