У меня есть журнал загруженного веб-сайта, который очень быстро растет. Я хотел бы знать, есть ли способ «разбивать» файл журнала каждый день без использования внешних инструментов.
РЕДАКТИРОВАТЬ: Моя ошибка, я нахожусь на сервере 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 может записывать ошибки и обращаться к файлам журнала через конвейер к другому процессу, а не напрямую к файлу. Эта возможность значительно увеличивает гибкость ведения журнала без добавления кода на главный сервер. Чтобы записывать журналы в канал, просто замените имя файла вертикальной чертой «|», за которой следует имя исполняемого файла, который должен принимать записи журнала на свой стандартный ввод.
Вы можете использовать эту технику для передачи журналов сценарию, который затем разбивает журналы любым удобным для вас способом. Это часто используется для разделения по виртуальному хосту.