Alguém acabou de me perguntar 'por quanto tempo devemos manter os logs do nosso aplicativo', e minha resposta foi 'até que o disco esteja cheio', pois não há motivo para jogá-los fora, a não ser ficar sem espaço.
No entanto, o logrotate padrão deseja que especifiquemos um período específico + número de rotações. Existe algo semelhante que digamos "gire diariamente e mantenha o histórico que quiser até que haja apenas 5% de espaço livre"?
A plataforma é o Redhat Linux.
Respostas:
Talvez você possa usar as diretivas firstaction ou lastaction para chamar um shell script que testa espaço livre em disco e, em seguida, execute uma exclusão nos arquivos mais antigos.
Atualizar:
Aqui está uma postagem do Stackoverflow sobre o tipo de script que você pode executar:
/programming/7523059/remove-oldest-file-in-repository
fonte
o próprio logrotate não tem essa opção. Você pode adicionar um script cron que encontre o log mais antigo para remover sempre que o espaço livre ficar abaixo dos seus critérios. Você pode fazer alguma outra validação também. No entanto, ficar muito cheio o disco o tempo todo não é uma boa idéia, porque o sistema não poderá criar arquivos temporários grandes e poderá causar falhas no aplicativo.
fonte
Eu só queria salientar que há casos em que você não deseja que seus logs preencham todo o espaço em disco disponível. Eu lidei com vários hosts com diretórios thin / provision provisionados e manter os logs em um determinado tamanho foi crucial. Usamos um trabalho de comparsas em conjunto com o logrorate para manter o tamanho baixo. Algo semelhante pode ser usado em seu ambiente, embora um servidor de log central como splunk ou syslog-ng provavelmente seja uma opção melhor.
fonte
Como o @cjc sugeriu, você pode usar a primeira ação. Veja este exemplo:
Neste exemplo, você removeu os arquivos maiores que 1 GB da partição / mnt / user se a partição usasse espaço superior a 50% .
fonte