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

Разделение журналов Apache

У меня есть журнал загруженного веб-сайта, который очень быстро растет. Я хотел бы знать, есть ли способ «разбивать» файл журнала каждый день без использования внешних инструментов.

РЕДАКТИРОВАТЬ: Моя ошибка, я нахожусь на сервере Windows 2003, Apache версии 2.0.64.

Вы можете использовать logrotate, чтобы ваши файлы журналов были небольшими, а также их можно сжать.

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

/var/log/apache/*.log {
      daily
      rotate 5
      size 100M
      compress
      postrotate
         /usr/bin/killall -HUP apache
      endscript
 }

Это сохранит пять повернутых файлов. Журналы будут ежедневно обновляться и сжиматься. Для получения дополнительной информации см. man logrotate.

Apache httpd может записывать ошибки и обращаться к файлам журнала через конвейер к другому процессу, а не напрямую к файлу. Эта возможность значительно увеличивает гибкость ведения журнала без добавления кода на главный сервер. Чтобы записывать журналы в канал, просто замените имя файла вертикальной чертой «|», за которой следует имя исполняемого файла, который должен принимать записи журнала на свой стандартный ввод.

Вы можете использовать эту технику для передачи журналов сценарию, который затем разбивает журналы любым удобным для вас способом. Это часто используется для разделения по виртуальному хосту.