Je peux utiliser 2> errorLogFile
pour consigner l'erreur d'exécution du script dans un fichier, n'est-ce pas? Ma question est de savoir comment enregistrer la date et l'heure de l'erreur avec l'erreur?
par exemple:
$ cat myScript
2> errorLogFile
..... # rest of the script
voici à quoi devrait ressembler le fichier d'erreur:
$ cat errorLogFile
21 Nov 2015 2:00 PM some error happened
Vous pouvez rediriger stderr
vers un processus de substitution qui traite stderr
et génère les lignes traitées dans le journal.
Par exemple, ce script imprime 5 lignes sur stdout
et 5 lignes sur stderr
, redirigeant stderr
vers un processus de substitution qui traite stderr
et affiche les lignes traitées dans un fichier. nommé "log" dans le répertoire de travail en cours (sachez que la syntaxe de redirection stderr
est _exec 2> [...]
_, et non _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
_
La substitution de processus appelle Perl, qui ajoute la date et l'heure actuelles dans ce format à chaque ligne et les envoie dans un fichier nommé "log" dans le répertoire de travail en cours.
_% 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
_