Combinando tail && journalctl


27

Sto registrando i registri della mia app e dei postgres.

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log

Devo includere i registri di pgpool. Un tempo era syslog ma ora è in journalctl.

C'è un modo per legare la coda -f && journalctl -f insieme?

Risposte:


27

Puoi usare:

journalctl -u service-name -f

-f, --segui

Mostra solo le voci del diario più recenti e stampa continuamente le nuove voci man mano che vengono aggiunte al diario.

Qui ho aggiunto "nome-servizio" per distinguere questa risposta dagli altri; si sostituisce il nome del servizio effettivo anziché il testoservice-name .


20

È possibile inoltrare le voci del registro al journal :

systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log

e poi usa journalctl -f... anche se, come menzionato Mark, questo stamperà tutte le voci di giornale.


Un modo per filtrare solo i messaggi da quei registri e da quella particolare unità è usare un distinto, SYSLOG_IDENTIFIERcioè modificare il file di unità e nella [Service]sezione aggiungere ad es.

SyslogIdentifier=my_stuff

riavviare l'unità quindi eseguire systemd-catcon lo stesso identificatore

systemd-cat -t my_stuff tail -f /tmp/myapp.log /var/log/postgresql.log

e infine interrogare il journal solo per quel particolare identificatore:

journalctl -f -t my_stuff

4

Se hai bash disponibile, puoi utilizzare la sostituzione di processo come uno dei tailparametri:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)

Questo è il modo elegante che ho anche provato, ma non funziona. La coda mostra che sta usando / dev / fd / xx, ma non viene visualizzato alcun registro.
bikey,

corretta; / dev / fd / xxx è la pipe temporanea che bash utilizza per implementare la sostituzione del processo; qualsiasi output journalctl verrà mostrato lì dentro.
Jeff Schaller

5
Probabilmente non vorrai seguire l'intero diario ma solo quelli per l'unità pgpool. Supponendo che il servizio sia denominato pgpool.service, provare journalctl -fu pgpool.service. Inoltre, se non lo stai eseguendo come root, assicurati che l'utente sia nel systemd-journalgruppo!
Mark Stosberg,

1

prova qualcosa del tipo:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.