У меня есть эта конфигурация 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 файл. Удалены все более старые журналы.
Каждый день я копирую новый повернутый файл и даю ему новое имя, на следующий день журналов с предыдущего дня не стало. Как я могу зафиксировать это?
Вам нужна следующая строка в Вашей конфигурации:
rotate <count>
Замена <count>
с количеством раз Вы хотели бы, чтобы журнал был повернут, прежде чем это удалит самый старый повернутый журнал. Так пять раз был бы:
/path/to/my/logfile.log {
su root root
daily
maxage 365000
copytruncate
dateext
dateformat -%d.%m.%Y
rotate 5
}
можно проверить Ваш logrotate
страница справочника для получения дополнительной информации.
Вы не использовали 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
также.