Файл доступа Apache access_log вращается в архивной копии около 1 ГБ каждые несколько дней. Где настройки для управления этим? Я хотел бы иметь возможность контролировать как максимальный размер, так и количество архивных журналов, которые он хранит. Является ли эта часть конфигурации apache, или мне нужно написать задания cron (и другие), чтобы справиться с этим? Я запускаю pre-forked httpd.
Как я могу ограничить размер Apache access_log и ограничить количество архивных журналов, которые он хранит?
Ответ 1
В большинстве дистрибутивов Linux система настроена для ежедневного запуска logrotate. Вы не увидите его в crontab для root или для любого конкретного пользователя.
Легко изменить, как он обрабатывает файлы журналов. На моем сервере Ubuntu файл /etc/logrotate.conf
имеет следующие настройки:
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
[и др.]
И вы можете посмотреть в каталоге /etc/logrotate.d/
, чтобы увидеть настройки для определенных каталогов и приложений.
Ответ 2
Я бы использовал rotatelogs, инструмент, расположенный в каталоге bin apache.
Подробнее см. http://httpd.apache.org/docs/current/programs/rotatelogs.html. У этого есть преимущество существовать в моей системе HP-UX.
Или, как упоминалось ранее, вы можете использовать инструмент logrotate, который поставляется с большинством дистрибутивов.
Ответ 3
Обычным способом является запуск logrotate
из cronjob, который может разрезать, копировать, сжимать, переименовывать, сохранять последние n и большинство других вещей, которые можно было бы хотеть. (Я думаю, что большинство дистрибутивов в эти дни устанавливают его по умолчанию.)