====== 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
====== Limitare lo spazio usato dai log ======
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
====== 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
===== Web References =====
* **[[https://community.hetzner.com/tutorials/optimize-journalctl-to-save-server-disk-space-in-linux|Optimize journalctl to save server disk space in Linux]]**