Я хотел бы выполнять ротацию файлов журнала всякий раз, когда я запускаю службу, но никогда не «автоматически».
Я запускаю службу на основе Python, которая ведет журнал в конкретный файл журнала. служба (в настоящее время) не поддерживает уведомление о повторном открытии файлов журнала (например, USR1
ловушка). Также сервис не должен быть перезапущенным для ротации файла журнала (он производит непрерывный аудиопоток, который не должен прерываться).
Система, в которой я работаю, не имеет аппаратных часов, поэтому часы сбрасываются каждый раз при загрузке системы, что делает записи журнала, происходящие из разных перезагрузок в одном файле, утомительными (я получаю одну и ту же дату несколько раз).
Я также хочу вести историю разных ботинок.
Таким образом, идея состоит в том, чтобы использовать ротацию журналов при каждой загрузке (только).
Что-то вроде бега /usr/sbin/logrotate --force /etc/logrotate.d/myservice
перед запуском службы следует сделать свое дело.
Теперь мой вопрос: можно ли настроить log-ротацию в /etc/logrotate.d/myservice
таким образом, что это будет никогда запускаться автоматически?
Простым решением было бы не сохранить мой файл logrotate-config в /etc/logrotate.d/
, но «в другом месте».
Но тогда я бы хотел, чтобы мой пользователь мог найти logrotate-config в хорошо известный место (чтобы они могли изменять конфигурацию по своему желанию).
Вы можете настроить logrotate для поворота файла с помощью функции copy-truncate, которая сохраняет исходный файл и не требует повторного создания файла журнала.
Синтаксис:
/tmp/output.log {
size 1M
copytruncate
rotate 4
compress
}
Это скопирует текущий файл, затем cat /dev/null > file
При этом logrotate только «автоматически» вращает файлы в определенных местах, если не настроено иное. Я предполагаю, что вы регистрируете свой скрипт в / var / log / httpd, и поэтому он автоматически поворачивается.
Зачем вообще возиться с logrotate, если вы не хотите / не нуждаетесь в нем?
Просто поверните файл журнала из своего сценария запуска.