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