tail -f метка времени файла журнала

Добрый день. У меня есть файл журнала, который заполняется в течение дня, поскольку несколько сценариев запускаются в разное время. Это небольшой файл, но одна проблема заключается в том, что в записях журнала нет временных меток для времени записи.

В этом случае я обычно захожу на сервер через сеанс PuTTY и запускаю хвост -f в этом файле журнала, чтобы увидеть, что эти сценарии начинаются. Что я хотел бы сделать, так это изменить свой хвост -f, чтобы включить метку времени для каждого элемента, отображаемого на экране. Я использовал следующее:

хвост -f планировщик_date '+%m%d%y'.log | sed s/^/$(дата +%H:%M%_*)/

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

Я просмотрел несколько других случаев, в том числе приведенные ниже, но ни один из них не дал именно то, что я ищу. Любая помощь будет оценена по достоинству.

Как передать tail -f в awk

https://users.cs.cf.ac.uk/Dave.Marshall/PERL/node241.html


person phamalda    schedule 31.03.2017    source источник


Ответы (1)


tail -f "scheduler_$(date '+%m%d%y').log" | perl -pe 's/^/$_=qx(date +%T_); chomp; $_/e'

qx вызывает внешнюю команду date +%T_. Его вывод хранится в переменной $_. chomp удаляет завершающий символ перевода строки из $_. Затем возвращается $_, чтобы стать заменой.

Я предполагаю, что последнее % в вашей команде является опечаткой и должно быть заменено секундами, поэтому я написал %T, что является аббревиатурой от %H:%M:%S.

Если производительность имеет значение, вы можете обойтись без нового процесса даты в строке, например:

tail ... | perl -pe 'BEGIN { use POSIX "strftime" } s/^/strftime "%T_", localtime/e'
person EndlosSchleife    schedule 01.02.2018