Wie leite ich die Journalausgabe bestimmter Einheiten in eine bestimmte Datei?

12

Ich habe ein System mit mehreren Daemons (als systemd-Einheiten), die Protokollinformationen in das Journal in Arch Linux ausgeben. Ich möchte die Journalausgabe einiger dieser Einheitendateien in eine separate Textdatei leiten, deren Speicherort ich spezifiziere, und im Wesentlichen eine Protokolldatei für eine Teilmenge von Einheiten erstellen. Wie kann ich das machen?

Amr Bekhit
quelle
Eine verwandte Frage ist unix.stackexchange.com/questions/468444 .
JdeBP

Antworten:

10

Dies scheint im Upstream nicht möglich und unerwünscht zu sein (Umleiten von stdout / stderr in einzelne Dateien), siehe z. B. http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - Lesen Sie den gesamten Thread, um weitere Informationen zu erhalten Kontextinformationen, wie dies funktionieren soll.

Sie können entweder in Syslog protokollieren und auf diese Weise in einzelne Dateien schreiben. Oder umgekehrt: Wenn das Gerät ein Programm aufruft, das selbst ein Protokoll schreiben kann, verwenden Sie dieses, um sich in einer Datei anzumelden.

Vielleicht möchten Sie auch einen Blick auf View stdout / stderr des systemd-Dienstes werfen

Was Sie bereits mit Ihrem aktuellen Setup tun können, ist
journalctl -u yourunitname > yourlogfile_for_yourunitname
, die gesamte Journalausgabe für Ihr Gerät "Ihr Einheitenname" in eine Datei zu leiten.

Im letzten Teil sollten Sie sich auch die Hinweise von Lennart aus dem oben genannten Mailinglisten-Thread ansehen:

In neueren systemd-Versionen systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.servicesollte so etwas wie eine sehr einfache Ausgabe erstellt werden, die nur die tatsächlichen Nachrichten und nichts anderes enthält. Sie können sogar "-f" übergeben und dies live machen. "

EDIT: Tatsächlich ist der Befehl für neuere systemd-Versionen nur journalctl und soweit ich das beurteilen kann, ist der oben genannte lange Befehl der gleiche wie journalctl -u yourunitnameund Sie können dort auch -fder Ausgabe "folgen" (wie in tailf oder tail -f).

doktor5000
quelle