LINUX.ORG.RU
ФорумAdmin

logrotate записывает логи апача одновременно в 2 файла

 


0

1

Добрый день! Настроил ротацию логов для apache с такой конфигурацией:

/var/log/apache2/mydomain/*.log {
  weekly
  missingok
  rotate 9
  compress
  delaycompress
  notifempty
  create 640 root adm
  sharedscripts
  postrotate
                if invoke-rc.d apache2 status > /dev/null 2>&1; then \
                    invoke-rc.d apache2 reload > /dev/null 2>&1; \
                fi;
  endscript
  prerotate
    if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
      run-parts /etc/logrotate.d/httpd-prerotate; \
    fi; \
  endscript
}

Скажу честно конфиг файл украден и не всё понятно в нём. Сейчас логи апача сохраняются одновременно в два файла: mydomain.com-access.log mydomain.com-access.log.1 Подскажите, пожалуйста, что не так в моей конфигурации?

P.S. в конфигурации апача указано записывать логи только в mydomain.com-access.log:

CustomLog /var/log/apache2/mydomain/mydomain.com-access.log combined


Последнее исправление: Dimez (всего исправлений: 3)

Что, прямо одни и те же логи в оба файла писались? Файлы были одинакового размера, одинаковой даты модификации и полностью побайтово совпадали? По идее, в .1 должен быть вчерашний лог.

Возможно, проблема с командами в блоке postrotate, они должны сообщать апачу чтоб тот закрыл старые файлы (после переименования их в .1) и открыл новые.

copytruncate это костыль на случай демонов которые не умеют сами переоткрывать логи, апач умеет.

firkax ★★★★★
()

1. Логротате не пишет логи, он их только ротейтит.
2. Проблема в том, что файл mydomain.com-access.log переименовывался в mydomain.com-access.log.1 (delaycompress), соответственно, в него и писалось.
3. Это потому, что не срабатывает «apache2 reload»: при переименовании дескриптор файла не меняется.
4. Почему «3»? Понятия не имею, где-то что-то не доделано. Может прав не хватает.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)