Solution 1 :
Vous pouvez diriger la sortie du script via une boucle qui préfixe la date et l'heure actuelles :
./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile
Si vous comptez beaucoup l'utiliser, il est facile de créer une fonction bash pour gérer la boucle :
adddate() {
while IFS= read -r line; do
printf '%s %s\n' "$(date)" "$line";
done
}
./thisscript.sh | adddate >>/var/log/logfile
./thatscript.sh | adddate >>/var/log/logfile
./theotherscript.sh | adddate >>/var/log/logfile
Solution 2 :
Voir ts
de l'Ubuntu moreutils
paquet :
command | ts
Ou, si $command
effectue une mise en mémoire tampon automatique (nécessite expect-dev
paquet):
unbuffer command | ts
Solution 3 :
La date la commande fournira ces informations
date -u
Sat Sep 10 22:39:24 UTC 2011
donc vous pouvez
echo $(date -u) "Some message or other"
c'est ce que tu voulais ?
Solution 4 :
Vous pouvez simplement écho la commande sort dans le fichier journal. c'est-à-dire,
echo "`date -u` `./script.sh`" >> /var/log/logfile
Ça marche vraiment :)
Exemple :
[[email protected]]$ ./script.sh
Hello Worldy
[[email protected]]$ echo "`date -u` `./script.sh`" >> logfile.txt
[[email protected]]$ cat logfile.txt
Mon Sep 12 20:18:28 UTC 2011 Hello Worldy
[[email protected]]$
Solution 5 :
Faire un config.sh
fichier
#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
Lorsque vous devez envoyer au fichier journal, utilisez
#!/usr/bin/env bash
source /path/to/config.sh
echo "$TIMESTAMP Say what you are doing" >> $LOGFILE
do_what_you_want >> $LOGFILE
Le fichier journal ressemblera à
2013-02-03 18:22:30 Say what you are doing
Il sera donc facile de trier par date