Frage

würde Ich mag eine Protokolldatei überwachen, die von einer Anwendung geschrieben wird. Ich mag die Datei Zeile für Zeile verarbeiten, wie, oder kurz danach geschrieben steht. Ich habe nicht einen Weg zum Nachweis, dass eine Datei nach dem Erreichen eof erweitert wurde gefunden.

Der Code muss auf Mac und PC arbeiten, und kann in jeder Sprache sein, obwohl ich bin sehr vertraut mit C ++ und Perl.

Hat jemand einen Vorschlag für den besten Weg, es zu tun?

War es hilfreich?

Lösung

In Perl, der File :: Schwanz Modul macht genau das, was Sie brauchen.

Andere Tipps

Eine generische genug Antwort:

Die meisten Sprachen, auf EOF, zurückgeben, dass keine Daten gelesen wurden. Sie können erneut versuchen, nach einem Intervall zu lesen, und wenn die Datei, da dieser Zeit gewachsen ist, wird das Betriebssystem Daten zurück.

Die essense von tail -f ist die folgende Schleife:

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

Die suchen Anruf den EOF-Flag zu löschen.

Es sollte möglich sein, den Standard-io von tail -f

verwenden lesen

Ich habe gedacht, die Aktionen über tee ausgibt und von dort tail'ing (oder die Schleife oben verwenden) die von T-Stück erstellte Datei einige verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top