Logrotate não exclui logs mais antigos

Logrotate não exclui logs mais antigos

Estou usando a seguinte configuração para arquivar e excluir logs:

/path/to/logs/*.log {
    daily
    missingok
    compress
    rotate 4
    nodateext
    nocreate
    maxage 14

}

Meu local de registros tem registros parecidos com estes:

-rwxrwxrwx 1 nobody nobody 21635 Sep 26 13:09 audit-2016.09.26.log

Que são então girados e compactados para ficar assim:

-rwxrwxrwx 1 nobody  nobody    180485 Sep 10 03:41 audit-2016.09.26.log.1.gz

O problema que estou tendo é que, depois de arquivá-los todas as noites, os logs não são excluídos após 14 dias (como deveria fazer a diretiva maxage).

Alguém tem alguma ideia de por que isso está acontecendo ou o que devo mudar na minha configuração do logrotate?

Obrigado!

Responder1

Na página de manual do logrotate:

contagem máxima

Remova logs rotacionados com mais de dias.A idade só é verificada se o arquivo de log for girado.

audit-2016.09.26.logsó foi criado uma vez e nunca mais. Portanto, nunca mais será girado.

Na verdade, seus arquivos de log de auditoriajá estão girados. Parece que você deseja apenas compactá-los e remover arquivos antigos. Não sei se isso é possível com logrotate. Você pode adicionar um script postrotate à sua regra original, como:

       postrotate
           find /path/to/logs -name "*.log.1.gz" -mtime +14 -delete
       endscript

informação relacionada