Я хотел бы получать предупреждения по электронной почте, когда срабатывают некоторые HTTP-коды, поэтому я хотел отправлять журнал между разными файлами в зависимости от HTTP-кода запроса. Таким образом, я могу поставить наблюдателей на эти файлы, а затем получать уведомление об этом по почте.
Кроме того, файлы журналов должны быть легче, если код HTTP находится в отдельных файлах, поэтому это увеличит скорость моего парсера журналов.
Я безуспешно пытался найти информацию о документации Apache. Похоже, мне нужно использовать SetEnvIf
с чем-то вроде этого:
SetEnvIf ??http_code?? 403 403log
CustomLog ${APACHE_LOG_DIR}/403.log vhost_combined env=403log
SetEnvIf ??http_code?? 404 404log
CustomLog ${APACHE_LOG_DIR}/404.log vhost_combined env=404log
SetEnvIf ??http_code?? 406 406log
CustomLog ${APACHE_LOG_DIR}/406.log vhost_combined env=406log
etc ...
К сожалению, похоже, что "http_code" похоже на то, что в Apache не существует переменной.
В: Есть ли способ отправки журнала доступа в зависимости от кода HTTP в Apache?
Спасибо за прочтение.
SetEnvIf
смотрит на запрос. Из документация:
Директива SetEnvIf определяет переменные среды на основе атрибутов запроса.
Код ответа HTTP будет поступать из ответ и поэтому недоступен.
Вы усложняете работу Apache, чтобы упростить работу парсеру журналов. Apache также должен будет держать открытыми несколько дополнительных файловых дескрипторов, потребляя дополнительные ресурсы.
Если производительность является проблемой, вам следует собирать и обрабатывать журналы на другом хосте. Там вы можете выполнять все виды агрегирования, синтаксического анализа, уведомлений и любых специальных отчетов, которые вам нужны, без какого-либо влияния на ваши веб-серверы.