Gdzie logger rejestruje swoje wiadomości w Arch Linux?


18

loggerKomenda rejestruje wjazd przez syslog, który zwykle stawia tę linię do jakiegoś pliku podobnego /var/log/messages.

Jeśli dobrze rozumiem dokumentację w Arch Linux, rejestrowanie odbywa się poprzez systemd, ale nie mogę znaleźć loggerwpisów za pomocą journalctl.

  • Co dokładnie dzieje się z komunikatem przekazanym loggerw Arch Linux?
  • Gdzie jest przechowywany wpis dziennika? (Sugeruje szybki grep /var/log/journal/*/system.journal.)
  • Jak mogę uzyskać dostęp do tego dziennika? (Czy potrzebuję jakiejś specjalnej opcji journalctl?)

Odpowiedzi:


15

Ponieważ wiadomości dziennika nigdzie nie pojawiają się w dzienniku , podejrzewam, że nie masz poprawnie skonfigurowanego syslog do przekazywania dzienników, a wiadomości po prostu są usuwane. Ponieważ korzystasz z Arch, łatwo to naprawić. Upewnij się, że syslog-ngpakiet jest zainstalowany:

pacman -S syslog-ng

Następnie upewnij się, że jest włączony podczas rozruchu:

systemctl enable syslog-ng

Wreszcie, ponieważ włączenie usług nie uruchamia ich automatycznie, uruchom usługę:

systemctl start syslog-ng

Szczegółowe informacje można znaleźć na tej stronie Arch Wiki .

Oto kilka powodów, dla których występuje ten problem:

Istnieje pewien sposób na zalogowanie się do klasycznego syslog i istnieje pewien sposób na zalogowanie się do nowego dziennika systemowego. Te są niezgodne; aplikacje obsługujące syslog nie mogą być magicznie stworzone do obsługi czasopisma - autor musi jawnie zaimplementować tę funkcję. Aplikacje obsługujące dziennik systemd są ogólnie określane jako obsługujące „natywny interfejs API” podczas działania w systemie systemd.

Ponieważ interfejs API syslog i interfejs Journald API są różne, aplikacje, które nie obsługują interfejsu Journald API, po prostu usuwają swoje komunikaty dziennika. Tak działo się w twoim przypadku.

Zadaniem syslog-ngpakietu jest przetłumaczenie wywołań interfejsu API syslog na wywołania interfejsu dziennika Journald. W ten sposób wiadomości syslog ostatecznie trafiają do dziennika.


syslog-ngzostał zainstalowany, ale nie włączony, zakładałem, że dziennik całkowicie go zastąpił. Czy loggermożna rozmawiać tylko z syslog? Jaki jest zatem prawidłowy sposób logowania do dziennika?
michas

@ michas Dodałem sekcję, która mam nadzieję, że to wyjaśni
strugee

„[..] tłumaczyć wywołania interfejsu API syslog na wywołania interfejsu API dziennika” - O ile widzę, tłumaczenie działa tylko na odwrót: wszystkie wiadomości znajdują się w katalogu / var / log /, a tylko dzienniki w dzienniku.
michas

@michas, może to być coś, co robi Journald, nie jestem pewien. syslog-ngprzekazuje wiadomości zaadresowane do syslog do Journald.
strugee

1
Czy logger foobar;journalctl|grep foobarw twoim systemie znajduje się wpis?
michas

0

Niektóre demony nie zapisywały dzienników /var/log/w Arch Linux, a konfiguracja syslog-ngjest inna niż w innych odpowiedziach, które widziałem.

Nie syslog-ng.servicema tam zwykłej usługi, syslog-ng@default.servicezamiast niej ma nazwę .

To nie zadziała:

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

Muszę to zrobić nieco inaczej w 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.
#
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.