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

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

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

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

6 ответов

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

rotate <count>

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

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

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

1
ответ дан 22 May 2018 в 22:58
  • 1
    Это работает, спасибо. Однако вы должны исправить этот пример. Вы написали count 5, когда это должно быть rotate 5. – Andrija Čehko 4 May 2017 в 11:13
  • 2
    @ AndrijaČehko поправил. Благодаря! – TopHat 4 May 2017 в 16:34

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

rotate <count>

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

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

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

1
ответ дан 18 July 2018 в 13:53

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

rotate <count>

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

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

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

1
ответ дан 24 July 2018 в 20:17

Вы не использовали директиву 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
ответ дан 22 May 2018 в 22:58

Вы не использовали директиву 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
ответ дан 18 July 2018 в 13:53

Вы не использовали директиву 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
ответ дан 24 July 2018 в 20:17

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

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