Я администрирую установку Windows Server 2003 (Standard Edition, 32-разрядная версия) с Apache2 и ColdFusion. На сервере более 100 виртуальных хостов, каждый с журналом доступа и журналом ошибок. Я искал аналог (или порт win32) классического Linux logrotate команда, которая позволяет ротацию файлов журнала без прерывания механизма блокировки Apache.
Все найденные мной решения, включая чавкать, противоречиво названные logrotate сценарий bash, апачелогроти несколько сценариев ротации журналов Perl; все они:
Очевидно, что это нежелательно при таком большом количестве виртуальных хостов, так как это приведет к остановке и перезапуску Apache сотни раз за ночь.
Я также исследовал использование ротация журналов, который поставляется с apache, и хронолог, которые используют конвейерный вывод для создания индивидуальных дневных / еженедельных / ежемесячных журналов. Эти программы не требуют перезапуска apache для ротации журналов, но они порождают экземпляр процесса для каждого файла журнала, в результате чего запускаются сотни дополнительных демонов, каждый из которых потребляет 200–300 КБ памяти.
Я также пробовал компилировать классический Linux logrotate команда на cygwin, но безуспешно.
Есть ли у кого-нибудь из вас предложения, что мне попробовать дальше? Или, что еще лучше, кому-нибудь из вас удалось получить классический Linux logrotate команда для компиляции на cygwin или любом другом компиляторе win32?
В качестве обходного пути вы можете переключиться на использование единого журнала для всех виртуальных хостов и выполнить их постобработку с помощью split-logfile
или что-то подобное (чтобы поместить их в отдельные журналы для каждого виртуального хоста). Это рекомендуется в документации Apache Вот. Не уверен, подходит ли это в вашей среде.