it-swarm.com.de

Tail && Journalctl kombinieren

Ich verfolge Protokolle meiner eigenen App und Postgres.

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

Ich muss die Protokolle von pgpool einschließen. Früher war es Syslog, jetzt ist es in journalctl.

Gibt es eine Möglichkeit, tail -f && journalctl -f zusammenzubinden?

34
bikey

Du könntest benutzen:

journalctl -u service-name -f

-f, --follow

Zeigen Sie nur die neuesten Journaleinträge an und drucken Sie kontinuierlich neue Einträge, wenn sie an das Journal angehängt werden.

Hier habe ich "Dienstname" hinzugefügt, um diese Antwort von anderen zu unterscheiden. Sie ersetzen den tatsächlichen Dienstnamen anstelle des Textes service-name.

47
Toufic

Sie könnten Ihre Protokolleinträge an journal weiterleiten :

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

und dann benutze journalctl -f ... obwohl, wie Mark erwähnt hat, alle Journaleinträge gedruckt werden.


Eine Möglichkeit, nur die Nachrichten aus diesen Protokollen und von dieser bestimmten Einheit zu filtern, besteht darin, ein eindeutiges SYSLOG_IDENTIFIER Zu verwenden, d. H. Die Einheitendatei zu bearbeiten und unter dem Abschnitt [Service] Z.

SyslogIdentifier=my_stuff

starten Sie das Gerät neu und führen Sie dann systemd-cat mit derselben Kennung aus

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

und schließlich das Journal nur nach dieser bestimmten Kennung abfragen:

journalctl -f -t my_stuff
20
don_crissti

Wenn Sie Bash zur Verfügung haben, können Sie Prozessersetzung als einen der tail -Parameter verwenden:

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

versuchen Sie etwas wie:

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