Shell Script Con Generazione Messaggi di Log in Linux

24 novembre 2018 di Daniele Frulla


Il significato di log in informatica prende spunto dal termine logbook (giornale di bordo) come bene riportano i wiki.

Per questo gli informatici hanno scelto il termine log per rappresentare una sorta di diario o registro dei vari processi che girano nel sistema. La registrazione dei logs è talmente importante che appena sorge un problema è la prima cosa che si vanno a visualizzare nel sistema operativo.

Generalmente, almeno per i sistemi linux più utilizzati (Debian o Redhat), i log di sistema vengono registrati nella directory /var/log. I file più importanti dove si registrano i log del sistema sono syslog e message.

Se scriviamo un bash script e vogliamo visualizzare i logs all’interno dei files /var/log/syslog o /var/log/message occorre scrivere una riga di codice che indica al sistema operativo di scrivere all’interno di questi files.

Supponiamo di avere uno script di backup e vogliamo registrare l’inizio e la fine di questo processo nei files di logs.

Lo scripts dovrà essere simile al seguente:

#!/bin/bash

logger -i –tag BACKUP START backup web site NewsTechnology.eu

[procedure per il backup]

logger -i –tag BACKUP END backup web site NewsTechnology.eu

 

Il file /var/log/syslog avrà quindi le seguenti righe in più:

Nov 22 08:26:42 nt-lp BACKUP[19262]: START backup web site NewsTechnology.eu

….

Nov 22 08:45:38 nt-lp BACKUP[19262]: END backup web site NewsTechnology.eu

Nell’esempio riportato abbiamo fatto indichiamo BACKUP come il tag del log (per una facile ricerca), mentre il numero del processo è racchiuso in parentesi quadre.

Notiamo in particolare come non sia più necessario inserire scomode variabili come date o nomi di file per i logs. Semplicemente ci siamo concentrati sul messaggio e sul tag che deve comparire all’interno del file /var/log/syslog.

Inoltre possiamo centralizzare i files di log in un sistema linux molto facilemente, così da avere un unico punto da dove prelevare i vari errore o notifiche.

Qui di seguito l’helper del software logger -h

Usage:
logger [options] [<message>]

Enter messages into the system log.

Options:
-i log the logger command’s PID
–id[=<id>] log the given <id>, or otherwise the PID
-f, –file <file> log the contents of this file
-e, –skip-empty do not log empty lines when processing files
–no-act do everything except the write the log
-p, –priority <prio> mark given message with this priority
–octet-count use rfc6587 octet counting
–prio-prefix look for a prefix on every line read from stdin
-s, –stderr output message to standard error as well
-S, –size <size> maximum size for a single message
-t, –tag <tag> mark every line with this tag
-n, –server <name> write to this remote syslog server
-P, –port <port> use this port for UDP or TCP connection
-T, –tcp use TCP only
-d, –udp use UDP only
–rfc3164 use the obsolete BSD syslog protocol
–rfc5424[=<snip>] use the syslog protocol (the default for remote);
<snip> can be notime, or notq, and/or nohost
–sd-id <id> rfc5424 structured data ID
–sd-param <data> rfc5424 structured data name=value
–msgid <msgid> set rfc5424 message id field
-u, –socket <socket> write to this Unix socket
–socket-errors[=<on|off|auto>]
print connection errors when using Unix sockets
–journald[=<file>] write journald entry

-h, –help display this help
-V, –version display version


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Copyright di Caterina Mezzapelle Part. I.V.A. 02413940814 - R.E.A. 191812