Разбор строк http common log
Пример конфигурации:
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access.log common
Образец строки:
192.168.0.1 - - [12/Dec/2006:01:18:49 +0200] "GET / HTTP/1.1" 200 10000
Пример кода:
<?php $text='192.168.0.1 - - [12/Dec/2006:01:18:49 +0200] "GET / HTTP/1.1" 200 10000'; $expr='/(\S*) (\S*) (\S*) \[([^\]]+)\] "([^"]+)" (\S+) (\S+)/'; preg_match($expr,$text,$result); var_dump($result); ?>
Результат:
array(8) { [0]=>string(71) "192.168.0.1 - - [12/Dec/2006:01:18:49 +0200] "GET / HTTP/1.1" 200 10000" [1]=>string(11) "192.168.0.1" [2]=>string(1) "-" [3]=>string(1) "-" [4]=>string(26) "12/Dec/2006:01:18:49 +0200" [5]=>string(14) "GET / HTTP/1.1" [6]=>string(3) "200" [7]=>string(5) "10000" }
Описание параметров лог файла Apache
Параметр | Описание |
%a | IP-адрес удаленного хоста |
%A | IP-адрес локального хоста |
%B | Размер ответа сервера в байтах, исключая HTTP-заголовки |
%b | Размер ответа сервера в байтах, исключая HTTP-заголовки. Вывод записывается в формате CLF, т.е. если ответ сервера равнялся 0 байтов, то вместо 0 записывается прочерк -. |
%{my_cookie}C | Значение cookies с именем my_cookie |
%D | Время в миллисекундах, потраченное сервером на обслуживание запроса. |
%{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. |
03.02.2007