
Приложение имеет каталог журнала, в котором создается множество выходных данных журнала. Структура файла в этом каталоге журнала выглядит примерно так:
localhost:/var/log/myapp # ls
appClient22334.a appClient22336.a appClient22338.a
appClient22334.b appClient22336.b appClient22338.b
appClient22334.c appClient22336.c appClient22338.c
appClient22335.a appClient22337.a appClient22339.a
appClient22335.b appClient22337.b appClient22339.b
appClient22335.c appClient22337.c appClient22339.c
Каждый день приложение генерирует сотни таких файлов, которые все подлежат хранению. Числа увеличиваются.
В большинстве случаев я использую logrotate для ежедневного хранения и сжатия файлов журналов, но в этом случае я не вижу, как это можно сделать.
Идеальным решением было бы что-то вроде
appClient.20120324.gzip
appClient.20120325.gzip
appClient.20120326.gzip
Может ли кто-нибудь из вас подтолкнуть меня в правильном направлении, можно ли это сделать с помощью logrotate (может быть, есть какой-то хитрый способ использования prerotate
?), или быстрее/проще написать специальный bash-скрипт?
решение1
Для простоты я бы запустил ежедневное задание cron, которое объединяет вчерашние файлы журнала в один файл (например, yesterday.log) и в случае успеха удаляет их, а затем запускает logrotate, чтобы (пере)именовать и сжать этот файл. Вы могли бы заставить logrotate выполнить всю задачу, используя , sharedscripts
но я так не думаю, и я бы не стал тратить время, пытаясь разобраться в этом.