Добавление метки времени перед каждой строкой STDOUT внутри perlscript

В perl-скрипте я захватываю все STDOUT и STDERR используя следующий код:

 open STDOUT, '>>', "$log_file" or die "Can't redirect STDOUT: $!"; open STDERR, ">&STDOUT" or die "Can't add to STDOUT: $!"; main(); 

Здесь я регистрирую все те, которые сгенерированы из main() но как добавить временную метку для каждой строки STDOUT ?

  • Выполнять команды Perl с определенного IP-адреса?
  • Считайте уникальные связанные значения в awk (или perl)
  • Двухфакторная аутентификация SFTP
  • Как я могу установить все отсутствующие библиотеки perl?
  • переименование каталога и его поддиректоров, не затрагивая их файлы
  • вход perl-get, условия проверки
  • Как вы указываете количество строк каждого файла в каталоге в человекообразном формате.
  • Запуск параллельных заданий по Ubuntu - различия между конфликтами ввода / вывода между Perl и Java
  • One Solution collect form web for “Добавление метки времени перед каждой строкой STDOUT внутри perlscript”

    Я предполагаю, что причина, по которой вы хотите сделать это, заключается в том, что вам не нужно включать «print scalar localtime» для каждого оператора печати. Если это так, я бы рекомендовал сделать это более простым способом.

    Вместо использования print в каждом заявлении печати создайте отдельные функции для протоколирования сообщений об ошибках, информационных сообщений и вывода на печать. Как это:

     sub logmsg { print (scalar localtime() . " @_\n"); } sub logerr { print STDERR (scalar localtime() . "ERROR: @_\n"); } sub debug { if ($debug) { print "DEBUG: @_\n"; } } 

    Затем в скрипте я всегда буду использовать logmsg или logerr если это необходимо. Это позволяет легко изменять, куда идут сообщения журнала, изменяя эти несколько функций. В вашем случае вы также можете изменить функции журнала для записи непосредственно в файл вместо STDOUT / STDERR. (В моем случае я часто использую syslog вместо этого, поэтому я удалю код временной метки и вместо этого использую, например, Sys::Syslog с соответствующим уровнем и уровнем журнала.)

    Linux и Unix - лучшая ОС в мире.