LINUX.ORG.RU

Формирование и ротация логов в одном скрипте или в двух разных?

 ,


0

1

Привет.

Есть скрипт, который в процессе своей работы формирует соответствующий лог. Также есть необходимость ротации лога.

Ротацию лучше организовать в отдельном скрипте, или организация ротации в том же скрипте нормальна?

Сам скрипт достаточно короток, и реализация ротации в отдельном скрипте выглядит избыточной.

Однако – в моем понимании – ротация есть логически отдельный процесс, и здраво не пытаться упихать все в один файл. К тому же ротация будет проводиться ежедневно, тогда как новые записи в лог будут добавляться значительно чаще.

В общем интуитивно кажутся необходимыми два отдельных скрипта. Но выглядит как будто некомпактно.

А если серьёзно:

ротация есть логически отдельный процесс, и здраво не пытаться упихать все в один файл.

Зачем дробить операцию из-за какой-то арбитрарной логики?

К тому же ротация будет проводиться ежедневно, тогда как новые записи в лог будут добавляться значительно чаще.

Вот этим и оперируй - ты ротацию будет делать по расписанию, а гадящую программу вызывать по требованию.

Только прописывать ротацию ты будешь, наверное, не в отдельном скрипте, а в конфиге logrotate и вызывать его как сервис, не?

Bfgeshka ★★★★★
()

Формирование и ротация логов в одном скрипте или в двух разных? bash, ротация

При запуске скрипта используйте параметр Mode - режим работы …

anonymous
()

На чём написан скрипт? В python’овском logging, например, из коробки есть ротация логов. Ни разу не видел, чтобы хоть кто-то ей пользовался, но раз есть - значит, кому-то понадобилась.

Chiffchaff
()

Проще всего пускать скрипт как юнит в systemd и получить ротацию логов бесплатно.

Другой, труЪ-вариант - настроить logrotate, а в скрипте предусмотреть переоткрытие лога по SIGHUP, как-то так:

#!/bin/bash
function logreopen() {
    exec > /var/log/mylog
}
trap 'logreopen' SIGHUP
logreopen
set -m # чтобы SIGHUP не пересылался дочерним процессам
while sleep 1; do
        date
done
legolegs ★★★★★
()