Logrotate удаляет мои журналы

У меня есть эта конфигурация logrotate, которая не находится в/etc/logrotate.d

/path/to/my/logfile.log {
    su root root
    daily
    maxage 365000
    copytruncate
    dateext
    dateformat -%d.%m.%Y
}

Я выполняю его crontab:

59 23 * * * root logrotate /path/to/my/logrotate/config > /some/logfile

Каждый день I видят только два файла журнала, усеченный logfile.log и новый logfile.log-DD-MM-YYYY файл. Удалены все более старые журналы.

Каждый день я копирую новый повернутый файл и даю ему новое имя, на следующий день журналов с предыдущего дня не стало. Как я могу зафиксировать это?

0
задан 3 May 2017 в 07:23

2 ответа

Вам нужна следующая строка в Вашей конфигурации:

rotate <count>

Замена <count> с количеством раз Вы хотели бы, чтобы журнал был повернут, прежде чем это удалит самый старый повернутый журнал. Так пять раз был бы:

/path/to/my/logfile.log {
    su root root
    daily
    maxage 365000
    copytruncate
    dateext
    dateformat -%d.%m.%Y
    rotate 5
}

можно проверить Ваш logrotate страница справочника для получения дополнительной информации.

1
ответ дан 3 November 2019 в 07:48

Вы не использовали rotate директива для определения, сколько вращений журнала Вы хотите сохранить т.е. сколько вращений, чтобы сделать. Если не упомянутый, значение по умолчанию параметра 0.

От config.c из logrotate источник, проверить rotateCount:

int readAllConfigPaths(const char **paths)
{
    int i, result = 0;
    const char **file;
    struct logInfo defConfig = {
                .pattern = NULL,
                .files = NULL,
                .numFiles = 0,
                .oldDir = NULL,
                .criterium = ROT_SIZE,
                .threshhold = 1024 * 1024,
                .minsize = 0,
                .maxsize = 0,
                .rotateCount = 0,
                ...
                <truncated>

Значение 0 для rotate сделает logrotate удалить старые версии журнала, вместо того, чтобы вращаться. Это происходит в Вашем случае.

Так, используйте нормальное значение для rotate директива для удовлетворения потребностей. Например, значение 7 сделал бы 7 вращений. Если журналы являются большими в размере, посмотрите на compress также.

1
ответ дан 3 November 2019 в 07:48

Другие вопросы по тегам:

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