Combinant tail && journalctl

27

Je copie les journaux de ma propre application et de mes postgres.

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

Je dois inclure les journaux de pgpool. Auparavant, il s'agissait de syslog, mais il se trouve maintenant dans journalctl.

Existe-t-il un moyen de lier ensemble queue -f && journalctl -f?

velu
la source

Réponses:

27

Vous pouvez utiliser:

journalctl -u service-name -f

-f, --suivre

Afficher uniquement les entrées de journal les plus récentes et imprimer en continu les nouvelles entrées au fur et à mesure qu'elles sont ajoutées au journal.

Ici, j'ai ajouté "service-name" pour distinguer cette réponse des autres; vous remplacez le nom du service réel au lieu du texte service-name.

Toufic
la source
20

Vous pouvez transmettre vos entrées de journal au journal :

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

puis utilisez journalctl -f... bien que comme Mark l'a mentionné, cela imprimera toutes les entrées de journal.


Une façon de filtrer uniquement les messages de ces journaux et de cette unité particulière est d'utiliser un SYSLOG_IDENTIFIERfichier distinct, c'est-à-dire d'éditer le fichier d'unité et, sous la [Service]section, d'ajouter par exemple

SyslogIdentifier=my_stuff

redémarrez l'unité puis exécutez systemd-catavec le même identifiant

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

et finalement interroger le journal uniquement pour cet identifiant particulier:

journalctl -f -t my_stuff
don_crissti
la source
4

Si bash est disponible, vous pouvez utiliser la substitution de processus comme l'un des tailparamètres:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)
Jeff Schaller
la source
C'est la manière élégante que j'ai également essayée, mais cela ne fonctionne pas. Tail montre qu'il utilise / dev / fd / xx, mais aucun journal n'est affiché.
bikey
correct; / dev / fd / xxx est le canal temporaire que bash utilise pour implémenter la substitution de processus; toute sortie journalctl apparaîtra là-dedans.
Jeff Schaller
5
Vous ne voulez probablement pas suivre tout le journal, mais seulement ceux de l'unité pgpool. En supposant que le service est nommé pgpool.service, essayez journalctl -fu pgpool.service. De plus, si vous ne l'exécutez pas en tant que root, assurez-vous que l'utilisateur est dans le systemd-journalgroupe!
Mark Stosberg
1

essayez quelque chose comme:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
Paul
la source