Weiterleitung
StandardOutput=file:/var/log/flume-ng/log1.log
StandardError=file:/var/log/flume-ng/log2.log
wie hier dokumentiert:https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
Beachten Sie, dass auf diese Weise der gesamte Inhalt der Protokolldatei bei jedem Neustart des Dienstes überschrieben wird.
Anhängen
Wenn Sie das Dateiprotokoll zwischen Dienstneustarts beibehalten und einfach neue protokollierte Zeilen daran anhängen möchten:
# Works only in systemd v240 and newer!
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
Bei Systemd älter als v240 können Sie Folgendes verwenden:
ExecStart=/bin/sh -c 'exec /usr/bin/my_binary [arguments] >>/var/log/flume-ng/log1.log 2>>/var/log/flume-ng/log2.log'
exec
bedeutet, dass das Shell-Programm durch my_binary
ersetzt wird Programm nach dem Einrichten von Weiterleitungen ohne Fork. Es wird also keinen Unterschied zur Ausführung von my_binary
geben direkt nach ExecStart=
.
ExecStart=/usr/bin/nohup …
Das ist falsch. Entfernen Sie es. Dieser Dienst wird nicht in einer interaktiven Anmeldesitzung ausgeführt. Es gibt kein steuerndes Terminal oder Sitzungsleiter, der ihm überhaupt ein Auflegesignal sendet.
ExecStart=… &
Das ist falsch. Entfernen Sie es. Dies ist kein Shell-Skript. &
hat keine spezielle Shell-ähnliche Bedeutung und wäre sowieso der falsche Weg, einen Dienst zu starten.
StandardOutput=/var/log/flume-ng/log1.log StandardError=/var/log/flume-ng/log2.log
Diese sind falsch. Verwenden Sie diese nicht. systemd sendet bereits die Standardausgabe und den Fehler des/der Serviceprozesse(s) in sein Journal, ohne solche Einstellungen in der Serviceeinheit. Sie können es mit
anzeigenjournalctl -e -u flume-ng.service
Zum Protokollieren in eine Datei ohne Überschreiben (system.d Version 240+ erforderlich):
StandardOutput=append:/var/log/flume-ng/log1.log
StandardError=append:/var/log/flume-ng/log2.log
oder
StandardOutput=append:/var/log/flume-ng/log.log
StandardError=inherit