logger и syslog
Тема дорожной карты · Bash
Команда logger — POSIX-стандартная Linux-утилита, которая записывает сообщения в системный журнал (syslog / journald) непосредственно из командной строки или Bash-скрипта без необходимости использовать какую-либо библиотеку syslog языка программирования. Базовая форма logger -t app "message" отправляет сообщение с тегом app с приоритетом по умолчанию user.notice, а logger -p daemon.err "critical error" отправляет сообщение с сочетанием приоритета daemon.err — такая структурированная маркировка является рекомендуемой практикой shell-скриптов для разграничения источников журналов в /var/log/syslog или journalctl. Использование logger -t app в Bash-скриптах автоматизации означает, что записи журнала централизованно агрегируются rsyslog или systemd-journald вместе с журналами других системных служб, что делает их доступными для поиска стандартными инструментами управления журналами Linux. Флаг --id=$$ (доступен в утилите logger из util-linux) записывает PID скрипта в каждую запись, обеспечивая корреляцию в многопроцессных рабочих процессах автоматизации. Интеграция logger в Bash-скрипты — рекомендуемая практика автоматизации Linux для создания структурированных, постоянных и централизованно управляемых журналов приложений.
Как это работает
logger и syslog: распространённые паттерны — ежедневные cron-задания, ротация логов, backup-скрипты, deployment-автоматизация, service health-check, system-level клей между unix-тулами. Комбинируйте с systemd (.service + .timer units) вместо cron, когда нужны логи + restart-on-failure + зависимости. Расписание: cron (просто), systemd timers (современнее + интегрировано), Ansible (multi-host).
Когда применять
Bash — для "связать эти тулы вместе" автоматизации (rsync + tar + ssh + email). Переходите на Ansible/Python/Go, когда скрипт растёт за ~200 строк, требует структурированных данных или multi-host координации. Всегда логируйте в syslog или файл с timestamps — сбои диагностируемы.
Типичные ошибки
Ловушки logger и syslog: cron без логирования (job падает 6 месяцев, никто не замечает); скрипты с расчётом, что PATH такой же, как в вашем shell (cron имеет минимальный env — задавайте PATH явно); root-owned скрипты, зовущиеся из www-data через sudo NOPASSWD (privesc-поверхность — минимизируйте sudoable).