Поверните файлы журнала с меткой времени в имени файла

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

2015-01-22-10-full-activity.log
2015-01-22-11-full-activity.log
2015-01-22-12-full-activity.log
2015-01-22-13-full-activity.log

Я хочу сжать каждый файл кроме последнего файла и удалить любой файл, более старый, чем 3 дня.

Я думал, что logrotate сможет сделать это для меня, но я не могу постигнуть его, и потенциально это - потому что я называю свой журнал операций со временем на его имя.

Какие-либо идеи?

3
задан 22 January 2015 в 16:39
1 ответ

Если вы вы уже создаете файлы с датой в имени, logrotate - не ответ; он основан на идее о том, что приложение всегда записывает в один и тот же файл журнала (например, /var/log/app/output.log), а затем logrotate заботится о переименовании / сжатии файлов и сообщает приложению повторно открыть файл снова исходный целевой файл.

В этом случаевозможно, пара заданий cron, использующих «find» с -mtime, например :[1284 sizes1 0 * * * root find /path/to/logs/*.log -mtime +1 -daystart -exec gzip {} \;

2 0 * * * root find /path/to/logs/*.log.gz -mtime +3 -daystart -delete

Вы можете повозиться с числами в -mtime и использовать -daystart (или нет), чтобы получить желаемые результаты (зависит от того, как вы хотите считать «количество дней» и т. д.)

6
ответ дан 3 December 2019 в 05:24

Теги

Похожие вопросы