Куди "logger" записує свої повідомлення в Arch Linux?


18

loggerКоманда реєструє запис через системний журнал, який зазвичай поміщає цю рядок в який - то файл , наприклад /var/log/messages.

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

  • Що саме відбувається з повідомленням, поданим loggerв Arch Linux?
  • Де зберігається запис журналу? (Швидкий хрип підказує /var/log/journal/*/system.journal.)
  • Як я можу отримати доступ до цього журналу? (Чи потрібен мені якийсь спеціальний варіант journalctl?)

Відповіді:


15

Оскільки повідомлення журналу ніде не з’являються у журналі , я підозрюю, що у вас немає системи налаштування переадресації журналів правильно, і повідомлення просто відкидаються. Оскільки ви перебуваєте на Arch, це легко виправити. Переконайтеся, що syslog-ngпакет встановлений:

pacman -S syslog-ng

Потім переконайтеся, що він включений під час завантаження:

systemctl enable syslog-ng

Нарешті, оскільки ввімкнення сервісів не запускає їх автоматично, запускайте службу:

systemctl start syslog-ng

Детальну інформацію див. На цій сторінці Wiki Arch .

Ось декілька підстав про те, чому виникає ця проблема:

Існує певний спосіб увійти в класичний syslog, і є певний спосіб увійти до нового журналу systemd. Вони несумісні; програми, що підтримують syslog, не можуть бути магічно створені для підтримки журналу - автор повинен явно реалізувати цю функцію. Програми, що підтримують системний журнал, зазвичай називають підтримкою "рідного API" під час роботи в системній системі.

Оскільки API syslog та API журналу відрізняються, додатки, які не підтримують API журналу, просто відкинуть повідомлення журналу. Це те, що відбувалося у вашому випадку.

Завдання syslog-ngпакета полягає в перекладі викликів API syslog в виклики журналу API. Таким чином повідомлення системного журналу з часом вносять його до журналу.


syslog-ngбуло встановлено, але не ввімкнено, я припускав, що журнал замінив його повністю. Чи в loggerзмозі поговорити тільки з системою? Який правильний спосіб увійти до журналу тоді?
michas

@michas Я додав розділ, який, сподіваємось, пояснить це
strugee

"[..] для перекладу викликів API syslog у виклики журналу API" - Наскільки я бачу, переклад працює лише навпаки: я знаходжу всі повідомлення у / var / log /, але лише журнали в journalctl.
michas

@michas це може бути те, що робить журнал, я не впевнений. syslog-ngпересилає повідомлення, адресовані до syslog, до журналу.
strugee

1
Чи є logger foobar;journalctl|grep foobarу вашій системі список записів?
michas

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.