Где `logger` регистрирует свои сообщения в Arch Linux?


18

Команда loggerрегистрирует запись через системный журнал, который обычно помещает эту строку в какой-то файл, например /var/log/messages.

Если я правильно понимаю документацию в Arch Linux, вся запись ведется через systemd, но я не могу найти loggerзаписи, использующие journalctl.

  • Что именно происходит с сообщением, данным loggerв Arch Linux?
  • Где хранится запись в журнале? (Быстрый grep предлагает /var/log/journal/*/system.journal.)
  • Как я могу получить доступ к этому журналу? (Нужна ли какая-то специальная опция для journalctl?)

Ответы:


15

Поскольку сообщения журнала нигде не появляются в журнале , я подозреваю, что у вас не настроена переадресация системного журнала в журнал , и сообщения просто удаляются. Так как вы находитесь на Arch, это легко исправить. Убедитесь, что syslog-ngпакет установлен:

pacman -S syslog-ng

Затем убедитесь, что он включен при загрузке:

systemctl enable syslog-ng

Наконец, поскольку активирующие сервисы не запускают их автоматически, запустите сервис:

systemctl start syslog-ng

Смотрите эту страницу Arch Wiki для деталей.

Вот некоторые сведения о том, почему возникает эта проблема:

Существует определенный способ входа в классический системный журнал, и есть определенный способ входа в новый системный журнал. Это несовместимо; приложения, поддерживающие системный журнал, не могут быть волшебным образом созданы для поддержки журнала - автор должен явно реализовать эту функцию. Приложения, поддерживающие журнал systemd, обычно называются «родными API» при работе в системе systemd.

Поскольку API syslog и API journald различны, приложения, которые не поддерживают API journald, просто удаляют свои сообщения журнала. Это то, что происходило в вашем случае.

Работа syslog-ngпакета заключается в преобразовании вызовов API syslog в вызовы API journald. Таким образом, сообщения системного журнала в конечном итоге попадают в журнал.


syslog-ngбыл установлен, но не включен, я предполагал, что journald полностью его заменил. Может loggerли общаться только системный журнал? Каков правильный способ входа в журнал в то время?
Михас

@michas Я добавил раздел, который, надеюсь, прояснит это
Strugee

«[..] чтобы перевести вызовы API syslog в вызовы API journald». Насколько я понимаю, перевод работает только наоборот: я нахожу все сообщения в / var / log /, но только журнальные в journalctl.
Михас

@Michas это может быть что-то, что делает Journald, я не уверен. syslog-ngпересылает сообщения, адресованные системному журналу, в journald.
стружка

1
Есть ли logger foobar;journalctl|grep foobarв вашей системе список записей?
Михас

0

Некоторые демоны не записывали логи /var/log/в Arch Linux, и конфигурация для syslog-ngних отличается от других ответов, которые я видел.

Обычного syslog-ng.serviceсервиса там нет, на самом деле он называется syslog-ng@default.service.

Это не сработает:

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

Я должен сделать это немного по-другому в 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.
#
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.