Как я могу отслеживать файл журнала и вставить временные метки, используя Perl?

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

  •  09-10-2019
  •  | 
  •  

Вопрос

У меня есть приложение, которое генерирует журналы в режиме 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 Модуль был разработан специально для чтения при добавленных файлах журнала.

Это может стоить взгляда.

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