Куда попадёт строка, решают правила rsyslog — по ним видно и то, почему на сборщик не ушло ничего.
Службы и программы пишут в журнал systemd, а rsyslog получает от него копию каждой строки и раскладывает по файлам в /var/log. Кроме текста, у строки есть метка — имя программы, lab-orders, — и приоритет из двух частей: источник (facility) — kern для ядра, auth для входа в систему, mail, user для обычных программ, local0–local7 для своих — и уровень: err, warning, info и другие.
Правило rsyslog — строка из двух частей: какие строки отобрать и что с ними сделать. Правила Ubuntu лежат в /etc/rsyslog.d/50-default.conf:
Слева — отбор источник.уровень: * значит «любой», none исключает источник, а уровень отбирает себя и всё серьёзнее. Справа — действие, здесь путь к файлу; минус перед путём разрешает не сбрасывать каждую строку на диск сразу. Строка проходит все правила по очереди и попадает в каждый файл, чей отбор подошёл, пока её не остановит правило со stop. Свою строку с меткой и приоритетом отправляет logger (в Вики):
Почтовая программа отправила строку: logger -p mail.err -t shop "диск почты заполнен". В какие файлы её запишут правила из 50-default.conf выше?
-
Отбор
*.*;auth,authpriv.noneисключает только вход в систему — почта проходит и в /var/log/syslog. -
Первое подошедшее правило строку не останавливает:
mail.*и*.*тоже её отбирают. Проверь:sudo grep shop: /var/log/mail.log /var/log/syslog. -
Свой файл у них есть: правило
mail.errпишет в /var/log/mail.err, аmail.*— ещё и в /var/log/mail.log.
Строку отбирают три правила: *.*;auth,authpriv.none, mail.* и mail.err — и rsyslog пишет её во все три файла. Остановить строку на полпути может только правило со stop.
Главное в шаге
- У строки syslog есть метка программы и приоритет «источник.уровень»; по ним rsyslog выбирает файлы.
-
Строка проходит все правила подряд и пишется в каждый подошедший файл, пока её не остановит
stop.