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?

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.


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

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)

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.