LINUX.ORG.RU

[perl]Работа с логами и ротацией

 


0

1

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

Набросал вот это:

	my $res = stat($filename);
	my $newres = stat($filename);
	my $eof = 0;
	my $changenow = 0;
	open(my $fd, '<', $filename) or die $!;
	while (1) {
		my $line = <$fd>;
		if (!length($line)) {
			$eof = 1;
		} else {
			$eof = 0;
			chomp $line;
			parse_line($line);
			next;
		}
		$newres = stat($filename);
		if ($newres->ino != $res->ino) {
			if ($changenow && $eof) {
				close($fd);
				open($fd, '<', $filename) or die $!;
				$res = $newres;
				$changenow = 0;
				next;
			}
			if ($eof) {
				$changenow = 1;
			}
		}
		sleep(10);
	}

Работоспособна ли такая схема?

Ответ на: комментарий от GateKeeper

А, всё, вопрос снят. AnyEvent - это для каталогов, судя по описанию.

GateKeeper ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.