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?)
michas
źródło

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.

strugee
źródło
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, [email protected]zamiast 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 [email protected]
# systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /usr/lib/systemd/system/[email protected].
#
Lloyd Rochester
źródło