Algumas perguntas são respondidas aqui: logrotate diariamente e tamanho?
Normalmente, o logrotate
será executado apenas uma vez por dia, portanto, os limites de tamanho não serão honrados exatamente. O arquivo de status de logrotate
(possivelmente /var/lib/logrotate.status
) armazena apenas as datas (não as vezes), ele não deve ser usado com mais frequência, portanto você não pode rotacionar arquivos com mais frequência ( Atualizar : versão 3.85 adiciona suporte por hora e armazena um registro de data e hora completo no arquivo de estado.)
Você não diz quais syslogd
você está usando, rsyslog e syslog-ng suportam rotação baseada em tamanho autogerenciado, então você deve ser capaz de faça com que eles girem por tamanho e faça com que logrotate
gire semanalmente (embora alguns pensamentos possam ser necessários para a nomeação de arquivos para garantir que a rotação simultânea de arquivos não apague acidentalmente alguma coisa).
Uma outra opção é usar logs canalizados, assim como o Apache, na verdade, o rotatelogs
do Apache-2.4 suporta exatamente esse recurso (versões anteriores suportavam apenas tamanho ou tempo independentemente). Você não diz de onde os logs são originários, mas você pode logar em um pipe ou fifo, e usar rotatelogs
, se isso for suportado.
Com logrotate
< = v3.8.0 os três cenários suportados são:
- tamanho rotação por tamanho, uma vez por dia, no máximo, independentemente do tempo decorrido
- timeperiod rotacionar incondicionalmente por período de tempo, independentemente do tamanho
- minsize & timeperiod se o tamanho do arquivo de log exceder o tamanho mínimo, gire por tempo. Um uso comum é "minsize 1", o que significa que os logs de 0 byte não são rotacionados, minimizando a desordem.
logrotate-3.8.1
adiciona:
-
maxsize & timeperiod
gire quando o tamanho exceder maxsize ou após o período de tempo decorrido.
logrotate
pode precisar ser executado mais do que o padrão uma vez por dia nesse caso.
logrotate-3.8.5
adiciona:
-
suporte por hora e armazena um registro de data e hora completo no arquivo de estado. Você deve executar
logrotate
(pelo menos) por hora para isso.