Wo loggt `logger` seine Nachrichten in Arch Linux?


18

Der loggerBefehl protokolliert einen Eintrag über syslog, wodurch diese Zeile normalerweise in eine Datei wie folgt verschoben wird /var/log/messages.

Wenn ich die Dokumentation in Arch Linux richtig verstehe, erfolgt die gesamte Protokollierung über systemd, aber ich kann die loggerEinträge mit nicht finden journalctl.

  • Was genau passiert mit einer Nachricht loggerin Arch Linux?
  • Wo ist der Protokolleintrag gespeichert? (Ein kurzes Grep schlägt vor /var/log/journal/*/system.journal.)
  • Wie kann ich auf dieses Protokoll zugreifen? (Brauche ich eine spezielle Option für journalctl?)

Antworten:


15

Da die Protokollnachrichten nirgendwo im Journal angezeigt werden , habe ich den Verdacht, dass Sie Syslog für die Journalweiterleitung nicht richtig eingerichtet haben und die Nachrichten einfach gelöscht werden. Da Sie auf Arch sind, ist dies einfach zu beheben. Stellen Sie sicher, dass das syslog-ngPaket installiert ist:

pacman -S syslog-ng

Stellen Sie dann sicher, dass es beim Booten aktiviert ist:

systemctl enable syslog-ng

Da das Aktivieren von Diensten diese nicht automatisch startet, starten Sie den Dienst:

systemctl start syslog-ng

Weitere Informationen finden Sie auf dieser Arch Wiki-Seite .

Hier einige Hintergrundinformationen zum Auftreten dieses Problems:

Es gibt eine bestimmte Möglichkeit, sich im klassischen Syslog anzumelden, und es gibt eine bestimmte Möglichkeit, sich im neuen systemd-Journal anzumelden. Diese sind nicht kompatibel; Anwendungen, die Syslog unterstützen, können nicht auf magische Weise erstellt werden, um das Journal zu unterstützen. Der Autor muss diese Funktion explizit implementieren. Anwendungen, die das systemd-Journal unterstützen, werden im Allgemeinen als "native API" bezeichnet, wenn sie auf einem systemd-System ausgeführt werden.

Da sich die Syslog-API und die Journald-API unterscheiden, werden bei Anwendungen, die die Journald-API nicht unterstützen, nur die Protokollnachrichten gelöscht. Dies war in Ihrem Fall der Fall.

Die syslog-ngAufgabe des Pakets besteht darin, Syslog-API-Aufrufe in Journald-API-Aufrufe zu übersetzen. Auf diese Weise gelangen Syslog-Nachrichten schließlich in das Journal.


syslog-ngWurde installiert aber nicht aktiviert, habe ich davon ausgegangen, dass journald es komplett ersetzt hat. Kann loggernur mit Syslog sprechen? Was ist dann die richtige Art, sich in Journald einzuloggen?
Michas

@michas Ich habe einen Abschnitt hinzugefügt, der das hoffentlich klarstellen wird
strugee

"[..] um Syslog-API-Aufrufe in Journald-API-Aufrufe zu übersetzen" - Soweit ich sehe, funktioniert die Übersetzung nur umgekehrt: Ich finde alle Nachrichten in / var / log /, aber nur die Journald-Nachrichten in journalctl.
Michas

@michas das mag etwas sein, was journald macht, da bin ich mir nicht sicher. syslog-ngleitet an syslog adressierte Nachrichten an journald weiter.
Strugee

1
Listet logger foobar;journalctl|grep foobarIhr System einen Eintrag auf?
Michas

0

Einige Daemons haben /var/log/in Arch Linux keine Protokolle geschrieben und die Konfiguration für syslog-ngunterscheidet sich von den anderen Antworten, die ich gesehen habe.

Der normale syslog-ng.serviceDienst ist nicht da, sondern heißt syslog-ng@default.servicestattdessen.

Das geht nicht:

# systemctl enable syslog-ng
Failed to enable unit: Unit file syslog-ng.service does not exist.

Ich muss es etwas anders machen als im Arch Wiki :

# systemctl start syslog-ng@default.service
# systemctl enable syslog-ng@default.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ng@default.service → /usr/lib/systemd/system/syslog-ng@.service.
#
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.