Logovanie v shell skripte
Dnes sa mi nechce piplať so žiadnym článkom, tak sem tentoraz pridám niečo iné ako zvyčajne. Je to malý trik ako si jednoducho spraviť logovanie v unix shell skripte. Hodí sa to najmä pri väčších skriptoch, a/alebo skriptoch, ktoré niečo modifikujú a je potrebné vedieť o každom kroku, čo skript urobil.
Keď som mal v bývalej robote spraviť nejaký skript, tak som občas používal tieto dve funckie na logovanie.
LOGFILE=/tmp/sem_sa_loguje;
put_log() {
if [ "$LOG" = "1" -o "$DEBUG" = "1" ]; then
DATE=`date "+%Y-%m-%d %H:%M:%S"`;
echo "$DATE $@" >> $LOGFILE;
fi
}
put_debug() {
if [ "$DEBUG" = "1" ]; then
put_log "DEBUG: $@";
fi
}
Ako vidíte sú použité tri úrovne logovania. Žiadne logovanie, logovanie normálnych udalostí a debug logovanie.
Stačí nastaviť premennú $LOG, alebo $DEBUG na 1 a v skripte používať funkcie put_log a put_debug podľa potreby. Ak bude nastavená len premenná $LOG, tak skript bude logovať len pomocou funkcie put_log. Ak bude nastavená premenná $DEBUG, tak skript bude logovať aj pomocou put_log a aj put_debug.
Pužitie je nasledovné.
#!/bin/sh # ... definícia funkcií ... put_log "Spustenie skriptu"; ... put_debug "Sme v strede skriptu, ale toto je len debug správa"; ... put_log "Ukončenie skriptu";
Samozrejme, že toto bola len jednoduchá ukážka a funkcie si môžete upraviť podľa potreby, poprípade pridať viac úrovní logovania…
