logger è uno strumento a riga di comando usato nei sistemi operativi Linux e Unix per aggiungere i log al file locale /var/log/syslog
o al server Syslog remoto. logger fornisce diverse opzioni per l’aggiunta di log come l’impostazione della priorità, specificando un sistema remoto o definendo esplicitamente la porta Syslog.
logger è installato di default nella maggior parte delle distribuzioni Linux. Quindi non c’è bisogno di installarlo esplicitamente. Possiamo stampare l’aiuto e le informazioni d’uso con l’opzione -h
come sotto. Le opzioni più usate del comando logger saranno elencate con qualche descrizione.
$ logger -h
In alternativa per un aiuto più dettagliato e informazioni sull’uso possiamo guardare e usare la pagina man del comando logger come sotto.
$ man logger
Sintassi del comando logger
il comando logger ha una sintassi semplice dove prima vengono fornite le opzioni e poi il log o il messaggio che vogliamo inviare a Syslog.
logger OPTIONS LOG
- `OPZIONI` sono singole o più opzioni per impostare alcuni attributi come il server remoto, la porta, la struttura del log ecc.
- `LOG` è il messaggio di log che vogliamo aggiungere o inviare. Circondato da doppie virgolette sarà più affidabile.
Linux Syslog
Il meccanismo Syslog è una parte importante della registrazione di Linux. La maggior parte delle distribuzioni Linux come Ubuntu, Debian, CentOS, Mint, RedHat, Suse memorizza i file di log sotto la directory /var/log
. Ci sono diversi tipi di log sotto questa directory come auth, MySQL, apache, ecc. Syslog è un file di log generico e il sistema utilizzato per memorizzare i log relativi al sistema, ai servizi, ecc. Il file syslog
può essere visualizzato con il comando tail come segue.
$ tail /var/log/syslog
Stampa Logs da Syslog
Prima di iniziare ad aggiungere un log al file syslog stampare il file syslog corrente sarà molto utile. Possiamo usare diversi comandi per stampare il file syslog. tail
è un comando usato per stampare le ultime 10 linee del file dato. In alternativa, possiamo fornire il numero di linee che vogliamo stampare esplicitamente. Nell’esempio seguente, stamperemo 30 linee dal /var/log/syslog
. Useremo l’opzione -n
per specificare il numero di linee.
$ tail -n 30 /var/log/syslog
Aggiungi log al file Syslog
Iniziamo con un semplice esempio del comando logger. Aggiungeremo solo una singola linea al file syslog senza fornire alcuna opzione al comando logger. Nel seguente esempio, aggiungeremo la linea “Questa è solo una semplice linea di log” al file syslog. Poi la elencheremo usando il comando tail.
$ logger "This is just a simple log line"
Possiamo vedere che il log viene aggiunto alla fine del file che è elencato in basso. Ci sono anche alcune informazioni sul log come sotto.
- `Feb 26 01:20:47` è la marca temporale o le informazioni sulla data del log quando viene aggiunto al file syslog.
- `poftut-com` è il nome del sistema.
- `ismail` è il nome dell’utente o del logger.
Specificare la priorità o la struttura del log
Generalmente, i log sono prioritarizzati dalle risorse di creazione dei log. Questo è anche chiamato una struttura usata per categorizzare i log. Possiamo fornire la priorità o la struttura utilizzando l’opzione -p
o --priority
long-form. Se non forniamo la priorità o la struttura, quella predefinita è user.notice
. Nell’esempio seguente, imposteremo la priorità lof come local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
Specificare l’indirizzo IP del server Syslog remoto
Di default, il comando logger metterà il logline dato nel file di sistema locale /var/log/syslog
. Ma questo non è sempre il caso. In ambienti aziendali, i log dovrebbero essere raccolti e gestiti in un server di log centrale. Possiamo usare il comando logger per inviare il dato log al server remoto fornendo l’indirizzo IP o il nome dell’host. Useremo l’opzione -n
o --server
per inviare il server di log remoto.
$ logger -n 192.168.1.10 "This is just a simple log line"
Usa TCP come protocollo Syslog
Syslog usa il protocollo UDP per default. UDP fornisce una trasmissione più veloce, con poche risorse e facile dei file di log. Ma UDP non fornisce una completa affidabilità dove entra in gioco TCP. Possiamo cambiare il protocollo di trasmissione predefinito UDP in TCP usando l’opzione -T
o --tcp
.
$ logger -n 192.168.1.10 -T "This is just a simple log line"
Specificare il numero di porta del server Syslog remoto
Quando si invia un log dal sistema locale a quello remoto la porta predefinita del syslog è la 514 sia per il protocollo UDP che TCP. Possiamo cambiare il numero di porta esplicitamente utilizzando l’opzione -P
o --port
fornendo il numero di porta.
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
Ridurre l’output del comando come log
Linux fornisce un sacco di strumenti che registrano le loro azioni con precisione. Possiamo usare il comando logger per inviare l’output di questi comandi come log. Useremo semplicemente i backtick della shell bash per circondare il comando. Di seguito registreremo il comando who
nel syslog.
$ logger `who`
L’ultima linea del syslog fornisce l’output del comando who che contiene username, numero di console e data dell’utente attualmente loggato.
Log File Specificato
Possiamo inserire il contenuto di un file di testo riga per riga nel file syslog. Useremo l’opzione -f
e forniremo il file che vogliamo registrare. In questo esempio, registreremo il file chiamato hostnames
.
$ logger -f hostnames
Imposta o limita la dimensione del log
I log sono usati per creare semplici informazioni. Quindi quando ci sono alcune linee con molti dati dovrebbero essere tradotte o impostare un limite. Possiamo impostare un limite per il numero di caratteri delle linee di log usando l’opzione --size
e il numero di caratteri che vogliamo impostare. Nell’esempio seguente, imposteremo il conteggio o limite a 10.
$ logger --size 10 123456789012345678901234567
Ignore le linee vuote o vuote
Mentre si leggono le linee di log da un file ci possono essere alcune linee vuote o vuote. La registrazione delle linee vuote non è efficiente, quindi possiamo ignorare le linee vuote utilizzando l’opzione -e
come sotto.
$ logger -e -f hostnames