Erro de log do script para um arquivo junto com a data e hora

3

Eu posso usar 2> errorLogFile para registrar o erro de executar o script em um arquivo, certo? minha pergunta é como registrar a data e a hora do erro junto com o erro?

por exemplo:

$ cat myScript
2> errorLogFile
..... # rest of the script

é assim que o arquivo de erro deve ser:

$ cat errorLogFile
21 Nov 2015 2:00 PM some error happened
    
por Edward Torvalds 02.11.2015 / 17:11

1 resposta

0

Você poderia redirecionar stderr para uma substituição de processo que processa stderr e envia as linhas processadas para o log.

Por exemplo, esse script imprimirá 5 linhas para stdout e 5 linhas para stderr , redirecionando stderr para uma susbstitution de processo que processa stderr e envia as linhas processadas para um arquivo chamado "log" em o diretório de trabalho atual (lembre-se de que a sintaxe para redirecionar stderr é exec 2> [...] , não 2> [...] ):

#!/bin/bash
exec 2> >(perl -pe '$x='date "+%d %b %Y %H:%M %p"';chomp($x);$_=$x." ".$_' >log)
for i in {1..5}; do
    sleep 1
    echo "STDOUT message #$i"
    echo "STDERR message #$i" >&2
done
exit 0

A substituição do processo invoca o Perl, que acrescenta a data e a hora atuais nesse formato a cada linha e as envia para um arquivo chamado "log" no diretório de trabalho atual.

% bash script.sh
STDOUT message #1
STDOUT message #2
STDOUT message #3
STDOUT message #4
STDOUT message #5
% cat log
02 Nov 2015 20:15 PM STDERR message #1
02 Nov 2015 20:15 PM STDERR message #2
02 Nov 2015 20:15 PM STDERR message #3
02 Nov 2015 20:15 PM STDERR message #4
02 Nov 2015 20:15 PM STDERR message #5
    
por kos 02.11.2015 / 17:30