Синтаксис файла конфигурации logrotate - возможно несколько подстановочных знаков?
Поскольку страница руководства не отвечает на мой вопрос, и я не хочу запускать цикл ротации, я решил задать этот вопрос здесь.
Страница man для logrotate дает следующий пример:
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail www@my.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Все примеры с подстановочными знаками содержат только одну запись. Теперь меня интересует, разрешено ли это:
/var/log/httpd/*.log /var/log/httpd/*/*.log {
# ... same as above
}
Вот причина: у меня есть несколько vhosts, и я разделил их по пользователю, который "владеет" этими vhosts. Поскольку файлы журналов доступны для чтения всем, я хочу подключить папку в домашний каталог пользователя, но ограничить ее файлами журналов, которыми "владеет" пользователь, что проще всего сделать, разделив журналы на папки (и связать -монтирование требует эту схему в любом случае). Поэтому я ищу решение, чтобы повернуть оба файла журнала под /var/log/httpd
а также все файлы журналов в подкаталогах этого каталога - без необходимости перечислять каждый подкаталог по имени.
В общем, страница руководства не дает никакой информации о том, возможно ли вообще несколько записей для правил подстановочных знаков или только для полных путей. Я использую logrotate версии 3.7.8-6, которая поставляется с Debian "Squeeze", но я считаю, что это не обязательно относится к дистрибутиву или версии программы.
3 ответа
Да, вы можете использовать несколько групповых символов. Вы можете проверить свой файл, не выполняя фактических вращений, выполнив это:
logrotate -d -f /etc/logrotate.conf
-d = Включает режим отладки. В режиме отладки не будет внесено никаких изменений в журналы или файл состояния logrotate.
-f = Указывает logrotate форсировать вращение, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей в logrotate, или если старые файлы журнала были удалены вручную, так как новые файлы будут созданы, и регистрация будет продолжена правильно.
Я просто хотел уточнить, потому что это то, что я получил здесь, глядя, как это сделать,
Допускается указание нескольких файлов журнала для одной конфигурации, например
/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
rotate 5
mail nobody@example.org
size 100k
sharedscripts
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Со страницы руководства для logrotate:
Обратите внимание, что имена файлов журнала могут быть заключены в кавычки (и что кавычки необходимы, если имя содержит пробелы). Применяются обычные правила цитирования оболочки, поддерживаются символы ', "и \.
Пожалуйста, не забудьте изменить или удалить кавычки при переходе от одного к нескольким шаблонам:
Это работает:
/var/log/*.log /var/log/*.blog {
это тоже работает:
/var/log/*.log
/var/log/*.blog {
Это не работает:
'/var/log/*.log /var/log/*.blog' {
и ни это
"/var/log/*.log /var/log/*.blog" {
Сравните с одним шаблоном.
Это работает:
'/var/log/*.log' {
и это тоже работает:
"/var/log/*.log" {
Протестировано с logrotate 3.10.0