Ротация логов

Логи модуля лежат в каталоге логов — по умолчанию на уровень выше корня сайта, для BitrixVM /home/bitrix/sh_log/*.log, — и сами не чистятся. Ротацию делает logrotate — системная утилита, а не Monolog: Monolog тоже умеет (RotatingFileHandler), но тогда за файлами следит каждый PHP-процесс, а не одна служба.

Логи модуля лежат в каталоге логов — по умолчанию на уровень выше корня сайта, для BitrixVM /home/bitrix/sh_log/*.log, — и сами не чистятся. Ротацию делает logrotate — системная утилита, а не Monolog: Monolog тоже умеет (RotatingFileHandler), но тогда за файлами следит каждый PHP-процесс, а не одна служба.

Пример настроек — logrotate/logrotate-b24-shef-problems. В модуль он не входит: это файл для сервера, а не для портала. Пути в нём — для окружения BitrixVM (/home/bitrix/sh_log); если корень сайта другой или каталог задан в настройках проекта — поправьте. До 2.0.0 пути вели в /home/bitrix/www/local/sh_log — обновляясь с 1.x, замените их.

Два блока с разным сроком хранения:

файлыхранитсязачем
log, log1, deprecations, log-custom, log1-custom2 дняотладка, нужна «здесь и сейчас»
mailer, exceptions, sh_problems_*10 днейпроблемы, их разбирают позже

Ротация — ежедневно или при размере от 5 МБ, со сжатием.

Без logrotate диск тоже не забьётся: отладочный лог и файлы проблем пишет CappedStreamHandler — перерос 20 МБ, файл откладывается в <имя>.1 и начинается новый. logrotate нужен для сжатия и срока хранения, а не как единственная защита.

copytruncate не нужен. Его добавляли, пока Monolog после ротации продолжал писать в переименованный файл. С Monolog 3.10 StreamHandler сам переоткрывает файл, когда у пути сменился inode, а copytruncate теряет строки, записанные между копированием и обрезкой.

Документация

Установка

sudo yum install logrotate -y      # или apt install logrotate
sudo logrotate --version

Настройки

Скопировать пример в /etc/logrotate.d/, поправить пути под свой корень сайта, владелец — root:

sudo cp -i logrotate-b24-shef-problems /etc/logrotate.d/logrotate-b24-shef-problems
sudo chown root:root /etc/logrotate.d/logrotate-b24-shef-problems

Файл берётся из репозитория, из docs/logrotate/: с 2.0.0 он не лежит в каталоге модуля на портале.

Проверка

sudo logrotate -d /etc/logrotate.d/logrotate-b24-shef-problems

-d — сухой прогон: печатает, что сделал бы, и ничего не трогает.

Удалить

sudo rm /etc/logrotate.d/logrotate-b24-shef-problems

← Monolog | ↑ Содержание | Безопасность логов →

Источник: problems/docs/5_logrotate.md — правки туда, сайт пересобирается сам.
CtrlI