Можно ли заставить logrotate
рассматривать файлы журналов в каталоге и во всех его подкаталогах? (т.е. без явного перечисления подкаталогов.)
62
Насколько глубоки ваши подкаталоги?
/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
Повернет все файлы .log в basedir /, а также все файлы .log в любом прямом дочернем элементе basedir. Если вам также нужно пройти 1 уровень глубже, просто добавьте еще один, /var/log/basedir/*/*/*.log
пока вы не пройдете каждый уровень.
Это можно проверить с помощью отдельного файла конфигурации logrotate, который содержит ограничение, которое не будет выполнено (высокий минимальный размер), а затем запустив log rotate себя в подробном режиме.
logrotate -d testconfig.conf
флаг -d перечислит каждый файл журнала, который он хочет повернуть.
-d
переводит logrotate в режим пробного запуска (то есть фактически ничего не меняет).-f
опция говорит LogRotate к «силе бежать». голое слово в конце команды - это файл конфигурации, который используется вместо стандартного. такlogrotate -f /some/config
означает запуск с этим файлом конфигурации, и всегда выполняется, даже если файл конфигурации говорит, что еще не время запускать. На мой неподготовленный взгляд и моему предшественнику, который этим занялся, мне показалось, что-f
он просто указывает конфигурационный файл. Весьма запутанно.В моем случае глубина подкаталогов может меняться без предупреждения, поэтому я настроил скрипт bash, чтобы найти все подкаталоги и создать запись конфигурации для каждого каталога.
Для меня также важно сохранить структуру подкаталогов после ротации, чего, похоже, не было с подстановочными знаками (т. Е. Ответ @ DanR). Если вы делаете ежедневные ротации журналов, вы можете поместить этот скрипт в ежедневную работу cron.
Как предложено @DanR, протестируйте с
logrotate -d
источник
Это старый поток, но вы можете сделать следующее:
Эти две звезды будут соответствовать нулю или более каталогов. Однако вы должны быть осторожны с тем, как определять файлы журналов для поворота, поскольку вы можете вращать файлы, которые уже были повернуты. Я процитирую здесь руководство по logrotate.
источник
globstar
перед запуском logrotate. Это включит его для bashshopt -s globstar
.