Поддерживаются ли переменные в файлах конфигурации logrotate? - PullRequest
7 голосов
/ 19 ноября 2009

Я посмотрел примеры logrotate.conf и все, что находится в моем каталоге /etc/logrotate.d. Нигде я не смог найти документацию по переменным в этих файлах.

Я пытаюсь создать файл конфигурации для ротации журналов приложения, которое мы пишем. Я хочу установить каталог, где журналы хранятся один раз, а затем использовать его в качестве переменной, например так:

my_app_log_dir=/where/it/is/deployed/logs

${my_app_log_dir}/*.log ${my_app_log_dir}/some_sub_dir/*.log {
    missingok
    # and so on
    # ...
}

Возможно ли это?

Ответы [ 3 ]

7 голосов
/ 11 декабря 2010

Вы можете достичь того, что ищете, внедрив этот ключ:

my-logrotate.conf (ПРИМЕЧАНИЕ: двойные кавычки " обязательны, также обратите внимание, что имена файлов не должны появляться в одной строке)

"*.log"
"some_sub_dir/*.log"
{
    missingok
    # and so on
    # ...
}

Тогда действительный скрипт logrotate - my-logrotate.sh

#!/bin/sh

set -eu

cd "${my_app_log_dir}"
exec logrotate /path/to/my-logrotate.conf

Теперь вы можете добавить logrotate.sh в ваш crontab.

2 голосов
/ 23 марта 2016

Вы можете использовать bash " здесь document ", чтобы создать подходящий файл конфигурации на лету, во время установки или перед запуском logrotate.

Скрипт bash может выглядеть так:

cat >rt.conf <<.
"${my_app_log_dir}/*.log" {
    rotate 5
    size 15k
    missingok
}
.

logrotate  rt.conf
1 голос
/ 19 ноября 2009

Непосредственно в файле конфигурации нет (насколько я знаю в logrotate).

Другое решение:

  • Используйте опцию include для включения частей файла конфигурации из каталога. Это может помочь вам, если у вас есть пакет для вашего приложения, пакет может оставить файл в этом каталоге, содержащий только записи для вашего приложения.
...