log-rotate

Global

Сколько файлов журнала хранить при ротации
в конфигурации это строкаlog-rotate 8внутри блока Global
Глубина истории журнала

При ротации MTA переименовывает старые файлы, приписывая номер: на Unix log становится log.1, log.1 — log.2 и так далее, — а затем начинает новый. Строка задаёт, сколько файлов держать всего. Умолчание — 8.

Число включает текущий файл. Значение 1 означает «только текущий, истории нет», 2 — текущий плюс один старый. 0 отключает ротацию совсем, и файл будет расти без предела.

Ротацию можно вызвать руками — командой pmta rotate log. Это полезно перед тем, как отдать журнал в поддержку: текущий файл закрывается и его можно забрать целиком.

Автоматическая ротация происходит в полночь, и управляет ею соседняя строка log-auto-rotation.

Главная ловушка — думать, что это дни. Здесь число файлов, а не срок. Сколько дней уместится в восемь файлов, зависит от того, как часто они сменяются, — то есть от log-auto-rotation и от того, как быстро растёт журнал.
Что делает Хаб. Не пишет — за журналом у нас следит системный logrotate, о чём сказано комментарием в шаблоне рядом с log-file.

Значит, действует вендорское умолчание 8, и две ротации — своя и системная — работают одновременно. Само по себе это не ломается, но стоит помнить: файлов с номерами может оказаться больше ожидаемого.

Рекомендуемые значения

Глубину выбирают по тому, как долго нужна история:

Значение Что означает
8 (умолчание) текущий плюс семь старых
1 только текущий, истории нет
0 ротации нет вовсе, файл растёт без предела

Это файлы, а не дни. Срок зависит от частоты смены.

Умолчание 8, правило нумерации, включение текущего файла в счёт, отключение нулём и ручная команда смены журнала — из руководства (§ 3.3.1.59.3). Замечание про соседство с системной ротацией — наше.
Пример в конфигурации
# текущий файл плюс семь старых
log-file /var/log/pmta/log
log-rotate 8
Значение 0 здесь опасно: файл будет расти, пока не кончится место на разделе — а на нём же лежит учёт и, возможно, спул.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Ставят 0, чтобы «не терять историю»

наш опыт

Чем чреватоРотация выключается совсем, и файл растёт без предела. На разделе с журналом обычно лежит и учёт — кончится место у обоих сразу.
Как заметитьОдин файл журнала в несколько гигабайт.
Как правильноДержать ротацию включённой, а историю уносить наружу отдельной задачей.

Считают значение сроком хранения

наш опыт

Чем чреватоЭто число файлов. При частой смене восемь файлов могут покрыть сутки, при редкой — месяц. Планировать разбор по этому числу нельзя.
Как заметитьНужного дня в журналах нет, хотя «хранится восемь».
Как правильноСмотреть даты файлов, а не их число; при необходимости увеличить значение.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
log-rotate <number>
Значения
целое; 0 отключает ротацию
Умолчание
8 § 3.3.1.59.3
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка пишется в корне файла, раздел Global, и касается журнала узла. У файлов учёта своя ротация — move-interval, max-size и delete-after в блоке <acct-file>.
Как проверить на узле
Проверка прямая — считаем файлы журнала:
ls -la /var/log/pmta/log*
Файлов должно быть не больше заданного числа, включая текущий. Больше — значит рядом работает ещё и системная ротация, и стоит выбрать что-то одно.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобрать зависшую очередь