Как направить вывод журнала определенных единиц в определенный файл?

12

У меня есть система с несколькими работающими демонами (в виде модулей systemd), которые выводят информацию журнала в журнал в Arch Linux. Я хочу направить вывод журнала некоторых из этих файлов модулей в отдельный текстовый файл, местоположение которого я указываю, по сути создав файл журнала для подмножества модулей. Как я могу сделать это?

Амр Бехит
источник
Связанный вопрос - unix.stackexchange.com/questions/468444 .
JdeBP

Ответы:

10

Кажется, что это невозможно и нежелательно для апстрима (перенаправление stdout / stderr на отдельные файлы), см., Например, http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - читайте всю ветку для получения дополнительной информации. контекстная информация о том, как это должно работать.

Что вы можете сделать, это либо войти в системный журнал, и таким образом записать в отдельные файлы. Или наоборот, если устройство вызывает какую-то программу, которая может самостоятельно записать журнал, а затем использовать его для записи в файл.

Вы также можете взглянуть на View stdout / stderr службы systemd

То, что вы уже можете сделать со своей текущей настройкой, это использовать
journalctl -u yourunitname > yourlogfile_for_yourunitname
для направления всего вывода журнала для вашего устройства «yourunitname» в файл.

В последней части вы также должны взглянуть на подсказки Леннарта из вышеупомянутой ветки списка рассылки:

В последних версиях systemd что-то вроде этого systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.serviceдолжно создавать очень простой вывод, который включает только реальные сообщения и ничего больше. Вы можете даже передать «-f» и сделать это вживую ».

РЕДАКТИРОВАТЬ: На самом деле, для более новых версий systemd команда является только journalctl и из того, что я могу сказать, вышеупомянутая длинная команда такая же, как journalctl -u yourunitnameи вы также можете -fтам "следовать" вывод (как в tailf или tail -f).

doktor5000
источник