logs rotativos com logrotate

3

Eu quero agendar os logs com essas regras:

  1. arquivos de log dos últimos 2 dias são mantidos inalterados
  2. arquivos de log com mais de 2 dias são arquivados e movidos para a pasta nomeada por data, eles foram criados. (Por exemplo, todos os registros de 01 de dezembro de 2012 são movidos para 20121201 e arquivados.)
  3. arquivos de log com mais de 14 dias são removidos.

Eu quero usar o logrotate para isso, mas não tenho certeza se atende às minhas necessidades ou não.

Eu gostaria de algo assim, mas não funciona.

/mylog/* {   
prerotate
DIR=$(date +%y%m%d); // actually it's current date
mkdir $DIR
endscript
daily
rotate 2
olddir /mylog/$DIR
missingok
compress
postrotate
       find /mylog -type d -mtime +180 | xargs rm -f
endscript
}

Logrotate não entende que $ DIR é variável.

Todas as sugestões são bem vindas!

    
por user148378 05.12.2012 / 13:41

1 resposta

1

De acordo com @koniu do superusuário, não é possível . Tanto quanto eu verifiquei, eu não encontrei outras formas para isso.

Para a idade do registro, você tem uma diretiva maxage que, de acordo com a página do manual:

   maxage count
          Remove  rotated  logs  older  than <count> days. The age is only
          checked if the logfile is to be rotated. The files are mailed to
          the configured address if maillast and mail are configured.

Parece que não funciona em registros antigos movidos no olddir.

    
por 05.12.2012 / 13:56