Вращение наборов глубоких каталогов trres - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть приложение, которое создает глубокий набор каталогов с файлами журналов в большинстве подкаталогов, но на разной глубине. Пример:

/app/log/2020-04-02/a/b/c.log
/app/log/2020-04-02/a/b.log
/app/log/2020-04-02/a.log

И так далее, за исключением, как вы уже догадались, существует новый каталог / app / log / YYYY-MM-DD, создаваемый приложением каждый день

Что Я бы хотел бы сделать, чтобы logrotate.conf указывал на /app/log/* и вращал весь каталог на основе метки времени каталога. На самом деле, я просто хочу удалить все дерево, если штамп> n дней, поэтому не двигать и не сжимать

Я наивно пытался указать logrotate.conf на /app/log/* (корни каталога), но это не не помогло, так как они не являются файлами и, таким образом, logrotate не был заинтересован.

Я также мог бы добавить несколько записей для строки (строк) logrotate для каждой глубины, содержащей файлы, например,

app/log/*/* /app/log/*/* ...

Помимо того, что я действительно уродлив, я не всегда уверен, насколько глубоко дерево будет go, поэтому включение рисунка каждой глубины на самом деле не сработает для меня, и я просто не как решение

Является ли logrotate подходящим инструментом для работы, или я упускаю способ, которым logrotate должен это делать?

Желаемое поведение - удалить весь YYYY -MM-DD каталог, когда он устарел. Мне не нужно удерживать за несколько дней.

Некоторые идеи, которые я имел, указывали logrotate на указанный c файл журнала всегда в дереве, а затем вызывали сценарий postrotate (я полагаю, что logrotate отправляет путь к файлу сценария как argv [1]), а затем извлекаем каталог журналов root оттуда. Наконец, 'rm -rf' каталог, использующий скрипт post rotate. Но опять же, в этот момент, я не должен просто написать небольшой скрипт, чтобы сделать это без logrotate? С дюжиной строк Python или даже bash я мог бы сделать это довольно легко

Могу ли я занести в рот лого, когда он не принадлежит? И если да, то есть ли инструменты, более подходящие для такого рода вещей?

Я бы хотел найти чистый способ сделать это с помощью logrotate, потому что это стандартный, хорошо понятный инструмент, который знают все разработчики и системные администраторы, но, возможно, не существует такого способа сделать это

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

Любой совет приветствуется, даже если просто сказать, что logrotate кажется неправильным подходом. Я буду чувствовать себя лучше, зная, что не пропустил что-то простое ...

...