Вращающиеся журналы, сгенерированные процессом, который регистрирует в stdin

У меня длительный процесс, который записывает свой файл журнала в stdout, Я хотел бы сохранить эти выходные данные в разные файлы, автоматически поддерживать эти файлы (например, удаляя / архивируя старые), не перезапуская основной процесс.

По решению было бы отправить вывод в файл (process > log.txt) и использовать logrotate на это, но logrotate Необходимо перезапустить программу, что невозможно.

Другой - направить вывод в cronolog (process | cronolog), но в этом случае старые файлы не будут удалены / заархивированы, то есть я должен создать программу, которая будет выполнять техническое обслуживание для меня.

Лучше всего использовать обе утилиты, потому что с cronolog Мне не нужно перезапускать процесс, и logrotate будет поддерживать старые файлы журнала точно так, как я хочу. Есть ли способ заставить эти две программы работать друг с другом? Если нет, что является хорошим решением этой проблемы?

1 ответ

Решение

Multilog от daemontools от DJB может сделать (почти) именно то, что вы просите. Единственный недостаток, который мне известен, это то, что не во многих дистрибутивах есть пакет для daemontools.

Если вы не управляете своим приложением с svc (часть daemontools) вам нужно найти способ передать вывод в команду типа

multilog t s1048576 n100 ./my_log_directory

Это переводится как:

  • t: вставить временную метку tai64n (которую можно перевести в читаемое время с помощью tai64nlocal)
  • s1048576: поворот файла журнала, когда он увеличивается до 1 МБ
  • n100: хранить не более 100 повернутых файлов
  • ./my_log_directory: все, что начинается с . или же / - написать журнал в этот каталог

Записанный журнал будет иметь имя файла current, и когда multilog вращает журнал, он будет переименован в @<tai64n timestamp>.s где имя файла показывает время, когда файл был повернут. Расширение может быть .s если файл был благополучно очищен, или .u если это могло быть усечено.

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

Другие вопросы по тегам