Как сообщение приложения попадает в текстовый файл в /var/log?

Цепочка от приложения через syslog или journald до файлового вывода. Почему журнал systemd и текстовый лог — не одно и то же.

Короткий ответ

Что ответить на собеседовании

Один из вариантов: приложение вызывает библиотечную syslog(), сообщение поступает локальному сборщику, затем rsyslog или syslog-ng по правилам записывает его в файл. В системе с systemd промежуточным звеном может быть journald. Единой обязательной цепочки нет: приложение также может писать файл напрямую, а журнал systemd не является обычным текстовым логом.

Подробный разбор

Ответ с пояснениями

Начните с оговорки: наличие /var/log не означает, что все сообщения автоматически попадают в один текстовый файл. Путь определяется приложением и настройками сбора.

Классическая цепочка: приложение → локальный канал syslog → демон журналирования → правила маршрутизации и форматирования → файл. Например, приложение вызывает syslog() из libc, а rsyslog или syslog-ng выбирает получателя по facility, severity и другим условиям. syslog() в таком примере — библиотечная функция, а не название универсального системного вызова записи всех логов.

При systemd сервис может писать в stdout/stderr, подключённые к journald, либо отправлять сообщения через его интерфейсы. Затем сообщения передаются syslog-демону или читаются им из журнала. Варианты интеграции описаны в документации systemd.

Файлы journal имеют собственный формат: каталог /var/log/journal нельзя приравнивать к набору обычных текстовых логов. Кроме того, приложение вправе вести собственный файл без syslog.

При отсутствии записи проверяют всю цепочку: создаётся ли событие, куда направлен вывод, работают ли сборщики, какие действуют фильтры, хватает ли прав и места. Ротация управляет уже созданными файлами, но сама по себе не доставляет сообщения от приложения.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку