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…

Zanechať komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *