This is an old revision of the document!
Table of Contents
Come limitare i log di journalctl
In Debian il processo systemd-journald scrive nella directory /var/log/journal/. Oltre a misurare lo spazio occupato dai file è possibile interrogare il servizio stesso per sapere lo spazio utilizzato con:
journalctl --disk-usage
Il file di configurazione è /etc/systemd/journald.conf. Questi alcuni parametri che possono essere impostati per limitare lo spazio utilizzato:
SystemMaxUse=500M SystemKeepFree=1G MaxRetentionSec=1month MaxFileSec=1week
Dopo aver modificato il file si deve riavviare il servizio:
systemctl restart systemd-journald
Per liberare spazio al volo è possibile utilizzare i comandi:
journalctl --vacuum-time=1month journalctl --vacuum-size=500M
Utilizzo di journalctl
Vedere solo i messaggi recenti -S o --since:
journalctl --since 9:30 journalctl --since "10 min ago"
Aggiungendo il comando -f oppure --follow è possibile seguire la visualizzazione dei messaggi generati successivamente:
journalctl --since "1 min ago" --follow
Vedere solo i messaggi di una certa systemd unit:
journalctl -u dbus.service
Per-user journal e storage volatile
L'utente non privilegiato può vedere i messaggi dei propri servizi eseguendo il comando:
journalctl --user
Tuttavia questa possibilità esiste solo se è attivo lo storage su memoria persistente (Storage=persistent in /etc/systemd/journald.conf).
Se è attivo lo Storage=volatile è comunque possibile - da parte dell'utente root - vedere i messaggi generati dai serivizi utente utilizzando il syslog identifier (-t oppure --identifier=):
journalctl -t radio-backend journalctl -t "./radio-frontend"
L'identificatore syslog è determinato dal modo in cui il programma utente effettua il logging. Le due modalità più comuni sono:
| stdout | Se il programma emette i log su stdout e la unit systemd contiene le direttiva StandardOutput=journal, allora l'output viene dirottato su journal. L'identificatore syslog è uguale al nome della unit oppure è determinato dal valore indicato da SyslogIdentifier= nella unit stessa. |
|---|---|
| systemd nativo | Il programma invia nativamente i messaggi di log a systemd journal. In questo caso l'identificatore syslog è il nome con cui viene invocato il programma, eventualmente completo di path. La libreria normalmente consente di modificare il syslog identifier, ad esempio con il modulo systemd.journal di Python è possibile indicarlo nella funzione JournalHandler(SYSLOG_IDENTIFIER='myapp'). |
È possibile anche filtrare con una regex sul contenuto del messaggio (-g oppure --grep=):
journalctl -g radio_frontend
