Иногда наступает момент, когда стандартный формат логов Апача уже не торт, поэтому приходится указывать свой формат, благо Апач предоставляет очень большие возможности.
Изначально, в настройках апача /etc/apache2/apache2.conf прописаны такие правила
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Синтаксис такой:
LogFormat формат псевдоним
Мне понадобилось отслеживать время затраченное на выполнение запроса. Я взял формат из псевдонима common и дописал %T %D:
<VirtualHost *:80>
...
CustomLog ${APACHE_LOG_DIR}/access.monitor "%h %l %u %t \"%r\" %>s %b %T %D"
...
</VirtualHost>
Напоминаю, апач имеет следующий список возможных параметров:
| Параметр | Описание |
| %a | IP-адрес удаленного хоста |
| %A | IP-адрес локального хоста |
| %B | Размер ответа сервера в байтах, исключая HTTP-заголовки |
| %b | Размер ответа сервера в байтах, исключая HTTP-заголовки. Вывод записывается в формате CLF, т.е. если ответ сервера равнялся 0 байтов, то вместо 0 записывается прочерк -. |
| %{my_cookie}C | Значение cookies с именем my_cookie |
| %D | Время в микросекундах, потраченное сервером на обслуживание запроса. 1 секунда = 1 000 000 микросекунд |
| %{env}e | Значение переменной окружения с именем env |
| %f | Имя файла, указанное в запросе |
| %h | Удаленный хост |
| %H | Протокол запроса, например HTTP/1.1 |
| %{header}i | Значение заголовка с именем header в запросе. Например, чтобы получить значение заголовка User-Agent нужно записать: %{ User-Agent}i |
| %l | Идентификатор клиента. Записывается если включена директива IndentyCheck и клиент предоставил данные для идентификации, в противном случае записывается прочерк. |
| %m | Метод запроса: GET, POST, PUT и т.д. |
| %{ModuleNote}n | Значение примечания с именем ModuleNote из другого модуля. |
| %{header}o | Значение заголовка с именем header в ответе сервера. |
| %p | Порт сервера, который обслуживает запрос |
| %P | Идентификатор дочернего процесса Apache, который обслуживает запрос. |
| %{format}P | Идентификатор процесса, либо идентификатор нити дочернего процесса Apache, обслуживающего запрос. В качестве формата могут быть указаны pid или tid. Доступно для использования, начиная с Apache 2.0.46. Пример: %{pid}P |
| %q | Параметры строки запроса, указанные после символа ?. Если параметров не найдено, то записывается -. |
| %r | Первая строка запроса. |
| %s | Статус ответа сервера: 200, 401, 403, 404 и т.п. |
| %>s | Последний статус ответа сервера, если имели место внутренние перенаправления запроса. |
| %t | Время, в которой сервер зафиксировал запрос. |
| %{format}t | Время, отформатированное в соответствии с параметром format. Синтаксис параметра format на man-странице для strftime в системах unix, а также в описании функции strftime в справочнике функций PHP. |
| %T | Время в секундах, затраченное на обслуживание запроса |
| %u | Имя удаленного пользователя, если запрос требовал аутентификации HTTP. |
| %U | Запрошенный URL,исключая параметры, указанные после символа ? |
| %v | Каноноческое имя сервера, обслуживающего запрос |
| %V | Имя сервера, записанное в формате, определенным директивой UseCanonicalName |
| %X | Статус соединения, после отправки ответа сервера. |
| X = соединение было прервано перед отправкой ответа | |
| + = соединение было сохранено после отправки ответа | |
| - = соединение было закрыто после отправки ответа | |
| %I | Полученные байты, включая сам запрос и заголовки. Для использования этого параметра необходимо подключить модуль mod_logio. |
| %O | Отправленные байты, включая заголовки. Для использования этого параметра необходимо подключить модуль mod_logio. |
Задача решена, всем удачи.
Комментарии
Комментариев пока нет.