У меня есть сервер Apache с одним файлом журнала доступа, превышающим 600 МБ. Это сильно затрудняет поиск файла или его синтаксический анализ. Какое программное обеспечение или модули для Apache будут делать ежедневную копию моего файла доступа, чтобы сделать его более управляемым?
Вы можете указать, действительно ли вы ищете модуль Apache или что-то, что зависит от используемой ОС, например logrotate или cron (уже упоминалось в ответах). Это могло бы помочь ответить на этот, на мой взгляд, простой вопрос.
14 ГБ здесь! Чуть более одного года работ.
Я не забочусь о журналах и хочу, чтобы они не росли неограниченно: в WIN я использовал это, чтобы иметь журналы максимум 7x15 МБ. CustomLog "| bin / rotatelogs.exe -l журналы / доступ.% A.log 15M" общий
поцарапайте, что, согласно ошибке 51081 issues.apache.org/bugzilla/show_bug.cgi?id=51081, журналы поворота не перезаписываются
23 ГБ здесь, на старом сервере ... это должна быть встроенная функция

Вы смотрели на logrotate - это, вероятно, самый простой, наиболее широко доступный и хорошо понятный метод достижения этой цели. Он легко настраивается и, вероятно, сделает 90% того, что вам нужно.
Пример использования, такой как ответ Брайана, был бы действительно полезен. Спасибо.
Обратной стороной logrotate является то, что файл журнала будет продолжать записываться в старое имя файла до перезапуска процесса.
logrotate, наверное, лучшее решение. Используйте файл /etc/logrotate.conf, чтобы изменить настройки всех ваших журналов. Вы можете заменить weekly на daily, чтобы журналы менялись каждый день. Кроме того, вы можете добавить compress, чтобы архивы были сжаты. Если вас не интересуют старые журналы, вы можете установить значение Rotate rotate 4 на меньшее значение.
Я заинтригован - в чем разница между этим и поставляемым apache "rotatelogs"? И почему в руководстве по apache не упоминается logrotate (но он ссылается на cronolog)?
Просто предположение: это может быть потому, что logrotate доступен не во всех системах, в которых работает Apache. Я использовал его только в установках Linux, где он используется для обновления всех системных журналов и, конечно же, файлов журналов Apache.
Я большой поклонник Хронолог. Просто установите и пропустите через него свои журналы. Для ротации ежедневного журнала будет работать что-то вроде этого:
ErrorLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/error.log"
CustomLog "|/usr/bin/cronolog /path/to/logs/%Y-%m-%d/access.log" combined
Довольно удобно и после установки проще (по моему опыту), чем logrotate.
когда я использовал cronolog, я столкнулся с некоторыми проблемами, когда файл журнала достиг 2 ГБ данных. В этот момент больше не было регистрации, и apache остановился, пока я не удалил / не переименовал файл. С тех пор я использую logrotate и все в порядке :)
Фактическая команда для Windows, которую довольно сложно найти в Интернете:
CustomLog '|" "*Apache-Path/bin/rotatelogs.exe"
"**Apache-Path*/logs/backup/internet_access_%d-%m-%y.log" 86400' combined
Где бит «internet_access» - это имя, которое вы выбираете для своих файлов, 86400 - это количество секунд в одном дне. Вам необходимо изменить Apache-Path на соответствующий каталог, в который вы установили Apache.
Вместо того, чтобы пытаться заключить пути в кавычки, я сократил их, например "c: / Progra ~ 1 / ...". Кроме того, это заняло некоторое время, но в конце концов я понял, что мне нужны косые черты в путях. .
Не используйте обратную косую черту в пути, это не сработает! В качестве альтернативы вы можете использовать mod_log_rotate. Использование этого мода предотвращает также проблемы с cmd.exe под Windows.
У меня были некоторые проблемы в Apache2.4 (Windows 8) для реализации ротации журналов. Но исправлено, как показано ниже. В файле httpd.conf добавьте следующую строку ServerRoot "c: / Apache24" # Путь установки Apache #CustomLog "| bin / rotatelogs logs / access.log.% Y-% m-% d 86400" common # Это не работает , но при добавлении .exe все заработало. CustomLog "| bin / rotatelogs.exe logs / access.log.% Y-% m-% d 86400" общий
Обратите внимание, что параметр "циклические журналы" -n 4 может не работать должным образом, если вы не добавите параметр -L basename.
@alimack Можете ли вы дать точную команду для конфигурации rotatelog, потому что я получаю unable to open log error, когда пытаюсь запустить сервер Apache.
Невозможно открыть файл, похоже на разрешения - создайте пустой файл с правильным именем и проверьте разрешения на запись.
Мне этого достаточно ErrorLog '| "bin/rotatelogs.exe" "logs/error_%Y%m%d-%H%M%S.log" 10M'
rotatelog.exe или cronolog.exe в ОС Windows. Они используются в команде конвейера в http.conf Mod_log_rotate дополнительный модуль для apache ТОЛЬКО для ротации логов доступа Logrotate ТОЛЬКО для unix os.
У меня есть модуль, который делает это за вас без необходимости использования внешних трубок и т. Д .:
http://www.poptart.org/bin/view/Poptart/ModAutorotate
Я пытался добавить его в коллекцию модулей Apache, но, похоже, это уже давно не работает.
CustomLog "| bin / rotatelogs / var / logs / logfile 5M" общий
Эта конфигурация будет вращать файл журнала, когда он достигнет размера 5 мегабайт.
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
Это был бы лучший способ перенаправить журналы Apache. Не нужно компилировать мод с httpd.
Есть ли возможность ротации журналов для удаления старых файлов или их перезаписи?
@Tobia вы нашли способ удалить старые файлы?
Не с именами журналов дат, мне пришлось переключиться на имена индексированных журналов (rotatelogs.exe -n 3 filepath 1M)
Вам повезло - я столкнулся с 2,4 ГИГАБАЙТАМИ :(