Есть ли способ заставить Apache создавать журнал доступа для одной папки?
К файлам в этой папке будут обращаться очень часто, и я бы предпочел избегать использования каких-либо сценариев для создания журнала.
Примером может быть что-то вроде:
/folder
/folder/often_access.txt
/folder/often_access.exe
В идеале я бы хотел, чтобы Apache вел журнал доступа к этим файлам по очереди, т.е.
/folder/log/often_access.May2012.log
Если это возможно, я мог бы создать сценарий для чтения журнала по запросу.
Я не могу использовать поддомен, так как эти файлы должны проходить через HTTPS, а у нас нет сертификата с подстановкой.
Любые идеи?
ОБНОВИТЬ: Я ожидаю, что к некоторым из этих файлов будут обращаться чаще, чем 10-20 раз в секунду. Это уведомление об обновлении. Один из этих файлов представляет собой огромный двоичный файл, а другой - просто текст, содержащий последнюю версию.
Вы мог использовать переменные среды с mod_setenvif.
Но почему бы и нет? Это огромный риск для безопасности! Например, такая функция, встроенная в Apache, откроет возможность DoS за счет перегрузки количества дескрипторов файлов. В этом примере предположим, что на вашем сервере одновременно может быть открыто только 16 файлов. Теперь я могу стереть эти файловые дескрипторы, повторяя /1
, /2
, /16
- теперь Apache должен вести 16 журналов.
Самый безопасный способ (но отнюдь не самый ресурсосберегающий) - передать каждый запрос по конвейеру:
CustomLog "|/some/script/for/parsing/logs" combined
Это не устранит перечисленные выше параметры, но позволит вам иметь гораздо больше гибкости в том, куда идут журналы, а также снизит ответственность Apache за поддержание стабильности вашего сервера.
Наконец, что ты должен делать именно то, что вы не хотите делать - обрабатывать их постфактум. То, что вы ищете, - это своего рода агрегированный синтаксический анализ, то есть какие строки имеют дело с некоторым уникальным набором каталогов. Как часто это будет реально использоваться? Если это не часто, что не так с просто grep
ведете журналы и отображаете их вывод? Вот какие вопросы вам следует задать в первую очередь.