Как я могу отслеживать файл журнала и вставить временные метки, используя Perl?
Вопрос
У меня есть приложение, которое генерирует журналы в режиме Append, но журналы не замеются.
Можно ли использовать tail -f
с некоторым вариантом или perl
Скрипт для мониторинга пишет в этот файл и префикс их с временем?
Учитывая, что я бегаю окна без Cygwin, я могу избежать использования Bash или любой другой оболочке Unix?
Решение
Если вы используете HNU Hast, то вы должны быть в состоянии использовать GNU гав.
C:\test>tail -F file | gawk.exe "{s=systime(); print strftime(\"%Y-%m-%d:%H:%M:%S\",s),$0}"
Другие советы
Вы могли бы использовать цикл While:
tail -f logfile | while read line;
do
echo $(date) $line;
done
Подразумевает дату работы для каждой строки, хотя. Вы можете использовать параметры вывода формата команды даты, чтобы получить нужный формат Timestamp.
Я очень базовый эквивалент Perl будет (Script.pl):
while (<>) {
my $date = scalar localtime;
print $date . " " . $_;
}
tail -f logfile | perl script.pl
Может быть, вы можете использовать сценарий Perl с файлом :: Хвост и dateTime?
use File::Tail;
use DateTime;
my $ref=tie *FH,"File::Tail",(name=>$ARGV[0]);
while (<FH>) {
my $dt = DateTime->now();
print "[", $dt->dmy(), " ",$dt->hms(),"] $_";
}
Похоже, File::Tail
Модуль был разработан специально для чтения при добавленных файлах журнала.
Это может стоить взгляда.