Como posso evitar que os arquivos de log do meu servidor da web fiquem muito grandes?

3

Nota: Eu estou usando o Apache2 (no Linux), mas eu perguntei em um sentido geral (apenas para Linux) porque eu também gostaria de saber a "melhor" maneira de fazer isso de uma maneira geral ( já que estou prestes a implantar um site grande em Nginx ou Cherokee).

Meus arquivos de log estão ficando enormes depois de algumas semanas. Preciso mantê-los temporariamente, mas gostaria de excluir entradas com mais de duas semanas. Isso é possível, e como faço isso?

    
por orokusaki 01.02.2011 / 02:06

2 respostas

8

Você pode usar o logrotate. Ele gira os logs de acordo com um arquivo de configuração para um serviço específico. Geralmente é executado pelo cron diariamente.

Um exemplo de um arquivo de configuração para o apache em /etc/logrotate.d/apache2

/var/log/apache2/*_log {
 daily
 rotate 31
 missingok
 compress
 delaycompress
 sharedscripts
 postrotate
  if [ -f "'. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}'" ]; then
     /etc/init.d/apache2 reload > /dev/null
  fi
 endscript
 }

Isso seria:

  • gira os logs todos os dias
  • mantenha 31 arquivos de log girados
  • Compactar logs girados, mas manter o mais recente girado um descompactado (delaycompress)
  • Recarregue o processo

Se você não quiser que o processo seja recarregado, use copytruncate , que copiará o conteúdo atual em um novo arquivo, compactará e truncará o arquivo de log atual. Nesse caso, você não precisa de sharedscripts , postrotate e endscript .

    
por 01.02.2011 / 02:39
2

A ferramenta canônica para manipular logs é logrotate .

    
por 01.02.2011 / 02:30