Я могу отправить команду / из команды в rsyslog следующим образом:

ping www.superuser.com 2>&1 | logger -p user.info

В моей системе "живой" вывод можно наблюдать с помощью простого tail -f /var/log/messages . Это происходит из-за соответствующей строки в моем /etc/rsyslog.config :

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages

Однако то же самое не работает для моей пользовательской программы:

myprogram 2>&1 | logger -p user.info

Двоичный файл myprogram не возвращается / не завершается сразу после вызова - он будет работать некоторое время - и время от времени выводит сообщения (используя printf) на консоль. Он ведет себя так, если я не передаю его вывод в логгер. Поправьте меня, если я ошибаюсь, но это поведение похоже на команду (по крайней мере, когда достигается пункт назначения).

Почему тогда я не вижу вывод myprogram в /var/log/messages ? Может ли вывод быть буферизован как-то, и он просто еще не попадает в логгер? Может быть, что-то еще в строке конфигурации rsyslog.conf ?

1 ответ1

0

Оказывается, это был результат myprogram . Используя уловки, упомянутые в этом вопросе, я нашел быстрое решение:

script -q -c "myprogram" | logger -p user.info

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .