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

Apache daily logrotate

Я хочу создавать ежедневные журналы, но есть небольшая проблема. Журналы создаются не на каждый день, а содержат предыдущие файлы журналов. Вот моя текущая настройка, как я могу ее изменить, чтобы она создавала файл журнала только для каждого дня?

Редактирую следующий файл: /etc/logrotate.d/httpd

Я использую панель управления под названием Zadmin, поэтому я включил ее путь к журналу в качестве второго каталога.

Я использую CentOS 6.5 64 бит.

/var/log/httpd/*log /var/sentora/logs/domains/zadmin/*.log {
    missingok
    rotate 4000000
    daily
    notifempty
    sharedscripts
    postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

Apache позволяет передавать файлы журналов другой программе, которая затем может обрабатывать ротацию без перезагрузки / перезапуска Apache. Apache даже предоставляет программу для этого.

ErrorLog "|bin/rotatelogs -l -f /var/log/apache2/errlogfile.%Y.%m.%d.log 86400" common
CustomLog "|bin/rotatelogs -l -f /var/log/apache2/logfile.%Y.%m.%d.log 86400" common

Попробуйте бежать logrotate вручную для поиска ошибок: logrotate -d /etc/logrotate.d/httpd. В руководстве сказано: «-d Включает режим отладки и подразумевает -v. В режиме отладки не будут внесены изменения в журналы или файл состояния logrotate».

Вот что мы успешно используем:

/var/log/httpd/*log {
  daily
  dateext
  dateformate -%d-%m-%Y
  missingok
  nocompress
  rotate 30
  postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
  endscript
}

Следуя ответу Брайана, я большой поклонник cronolog, который делает в значительной степени именно то, что вы собираетесь:

CustomLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-access.log" combined
ErrorLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-error.log"

yum install cronolog даст вам хронолог на Cent6.