O Apache registra acessos em um arquivo de log já girado

1

Eu costumo criar meus logs de acesso e erro em uma pasta de nome de domínio sob /var/log , e esses arquivos são rotacionados com logrotate usando este conf:

/var/log/mydomain.org/access.log
{
  weekly
  missingok
  rotate 52
  compress
  delaycompress
  notifempty
  create 640 root adm
  sharedscripts
  prerotate
      /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=mydomain.org &> /dev/null
  endscript
  postrotate
      if [ -f /var/run/apache2.pid ]; then
          /etc/init.d/apache2 restart > /dev/null
      fi
  endscript
}

Eu tenho esse problema regularmente: meu access.log é girado para access.log.1 , mas o apache2 continua registrando o acesso em access.log.1 .

Eu não consigo entender por que isso está acontecendo. Alguma ajuda?

Obrigado antecipadamente.

    
por jpicaude 16.09.2013 / 22:05

2 respostas

1

Vou adivinhar que o processo do apache não está colocando um arquivo pid em "/var/run/apache2.pid" e, portanto, seu postrotate nunca é executado. Embora a solução de problemas (como sugere o comentário do faker) talvez tente isso:

...
postrotate
/etc/init.d/apache2 restart > /tmp/apache_restart.txt
endscript
}

Então, amanhã, olhe para /tmp/apache_restart.txt com more /tmp/apache_restart.txt

    
por 17.09.2013 / 01:11
-1

Por que você usaria o logrotate para girar os logs do apache, quando você poderia ter tudo em uma simples diretiva?

Você poderia usar algo como algo como:

ErrorLog "|/usr/sbin/rotatelogs /var/logs/httpd/error_log 86400"

Dessa forma, você não precisará manipular os bloqueios nos arquivos, e o apache rotacionará os registros para você.

    
por 17.09.2013 / 00:13