Чтение данных из файла журнала в виде отдельного приложения и запись в него
Я хотел бы отслеживать файл журнала, который записывается приложением. Я хочу обрабатывать файл построчно, как вскоре после этого. Я не нашел способ обнаружить, что файл был расширен после достижения eof.
Код должен работать на Mac и ПК и может быть на любом языке, хотя я больше всего знаком с C++ и Perl.
У кого-нибудь есть предложения, как лучше всего это сделать?
6 ответов
Достаточно общий ответ:
Большинство языков на 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.
Вы должны быть в состоянии использовать чтение стандартного ввода-вывода из хвоста -f
Я бы подумал, выводя действия через tee, а затем хвост (или используя цикл выше) файл, созданный для некоторого использования.
Для Java смотрите эту отличную статью
http://www.informit.com/guides/content.aspx?g=java&seqNum=226