Чтение данных из файла журнала как отдельного приложения означает запись в него

StackOverflow https://stackoverflow.com/questions/62832

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Суть tail -f это следующий цикл:

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

Тот Самый искать вызов заключается в том, чтобы снять флаг EOF.

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

Я бы подумал о выводе действий через tee, а затем о завершении (или использовании цикла выше) файл, созданный tee some use.

Для Java смотрите Эту превосходную статью

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top