Назад | Перейти на главную страницу

Apache регистрирует доступ к уже повернутому файлу журнала

Обычно я создаю журналы доступа и ошибок в папке доменного имени в /var/log, и эти файлы вращаются с помощью logrotate, используя этот 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
}

У меня регулярно возникает такая проблема: мой access.log повернут на access.log.1, но apache2 продолжает регистрировать доступ к access.log.1.

Я не могу понять, почему это происходит. Любая помощь ?

Заранее спасибо.

Я собираюсь предположить, что ваш процесс apache не помещает файл pid в "/var/run/apache2.pid", и поэтому ваш postrotate никогда не выполняется. Во время устранения неполадок (как следует из комментария faker), возможно, попробуйте следующее:

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

Тогда завтра посмотрите /tmp/apache_restart.txt с more /tmp/apache_restart.txt

Зачем использовать logrotate для ротации журналов apache, если все это можно сделать одной простой директивой?

Вы можете использовать что-то вроде:

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

Таким образом, вам не нужно будет обрабатывать блокировки файлов, и apache будет вращать журналы за вас.