Добавление метки времени перед каждой строкой 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 ?

  • Помогите прочитать плоский файл в unix и вывести на упрощенный формат csv для импорта в excel
  • Как удалить определенный номер в файле?
  • Получение последовательности fasta с использованием информации файла с файла из локально установленного файла
  • Почему мой Perl не играет хорошо с Unicode?
  • объединить несколько строк данных, имеющих одно общее поле
  • Как конвертировать из одного формата даты в другой формат?
  • извлечь столбец из большого текстового файла
  • Как добавить длительность времени, выраженную в days-hh: min: ss.nnn format?
  • 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 - лучшая ОС в мире.