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

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 с соответствующим уровнем и уровнем журнала.)

  • Поменять местами и группами по квадратным скобкам
  • Как проверить, работает ли данный PID?
  • Объединение файлов по 4 столбца каждый, в 4 файла для каждого столбца
  • Сообщение об ошибке Bash на mac с помощью Perl
  • Сценарий, который учитывает только установленные, TIME_WAIT и Closed Wait подключения с помощью Netstat
  • Замена пустого пространства без нуля
  • Это хорошая идея, чтобы дополнить сценарий оболочки Perl исключительно для использования регулярных выражений?
  • Какой из / usr / bin / perl или / usr / local / bin / perl следует использовать?
  • переименование каталога и его поддиректоров, не затрагивая их файлы
  • Может ли строка «abcedf» соответствовать строке «bafcde» в одной строке?
  • лучший язык программирования для интенсивных задач ввода / вывода
  • Разбор файла в соответствии с парой идентификаторов и более высокими значениями ниже
  • Linux и Unix - лучшая ОС в мире.