Чтение данных из файла журнала в виде отдельного приложения и запись в него - PullRequest
8 голосов
/ 15 сентября 2008

Я хотел бы отслеживать файл журнала, в который записывается приложение. Я хочу обрабатывать файл построчно, как вскоре после этого. Я не нашел способа обнаружить, что файл был расширен после достижения eof.

Код должен работать на Mac и ПК и может быть на любом языке, хотя я больше всего знаком с C ++ и Perl.

У кого-нибудь есть предложения, как лучше всего это сделать?

Ответы [ 6 ]

7 голосов
/ 15 сентября 2008

В Perl модуль File :: Tail делает именно то, что вам нужно.

3 голосов
/ 15 сентября 2008

Суть tail -f заключается в следующем цикле:

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

Вызов seek предназначен для сброса флага EOF.

3 голосов
/ 15 сентября 2008

Достаточно общий ответ:

Большинство языков в EOF возвращают, что данные не были прочитаны. Вы можете повторить попытку чтения через определенный промежуток времени, и если с тех пор размер файла увеличился, операционная система вернет данные.

2 голосов
/ 15 сентября 2008

Вы должны иметь возможность использовать чтение стандартного ввода-вывода из хвоста -f

0 голосов
/ 14 февраля 2011

Для Java смотрите эту отличную статью

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

0 голосов
/ 15 сентября 2008

Я бы подумал, что нужно выводить действия через тройник, а затем использовать хвост (или, используя цикл над ), файл, созданный этим путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...