Acho que weekly
significa que o logrotate quer ver pelo menos uma semana de entrada para o seu arquivo access.log para poder rotacioná-lo.
Assim, o problema parece ser que você não está armazenando a entrada de estado para acionar a rotação.
Aqui está um exemplo detalhado do caso simples, de como o logrotate decide rotacionar um arquivo de log. (estes são caminhos do fedora, Ubuntu, Centos, etc. podem ser diferentes)
(Eu fiz algumas requisições para http://localhost
, então existem algumas entradas no access_log, senão o logrotate nunca roda ...)
Então eu configurei meu logrotate para o apache para semanalmente assim;
/var/log/httpd/*log {
weekly
...
}
e originalmente não há entrada no arquivo /var/lib/logrotate.status
# grep access_log /var/lib/logrotate.status
<- nothing
Então o logrotate não roda o arquivo access_log
;
# /usr/sbin/logrotate -d /etc/logrotate.d/httpd
...
considering log /var/log/httpd/access_log
log does not need rotating
No entanto, se eu rodar logrotate manualmente assim;
# /usr/sbin/logrotate /etc/logrotate.d/httpd
agora há uma entrada no arquivo de estado para o httpd access_log;
# grep access_log /var/lib/logrotate.status
"/var/log/httpd/access_log" 2012-5-11
No entanto, o apache ainda não vai rodar o log, porque a entrada tem apenas 0 dias (2012-5-11);
# /usr/sbin/logrotate -d /etc/logrotate.d/httpd
considering log /var/log/httpd/access_log
log does not need rotating
No entanto, se você editar o arquivo de status com vi vi /var/lib/logrotate.status
, algo assim para definir a data para mais de uma semana ...;
# grep access_log /var/lib/logrotate.status
"/var/log/httpd/access_log" 2012-4-11 <--- more than a week ago..
Em seguida, o logrotate agora rotaciona corretamente o arquivo devido à data no arquivo de estado 2012-4-11
sendo mais de uma semana atrás a partir de hoje 2012-5-11
# /usr/sbin/logrotate -d /etc/logrotate.d/httpd
considering log /var/log/httpd/access_log
log needs rotating <--- logrotate rotates the file.
(lembre-se de que -d
causa uma execução a seco, portanto, é útil apenas para inspeção, você precisa executar o comando sem -d
para criar entradas de status ou girar arquivos, etc.)