2010-03-16 4 views
2

Хотя я могу получить разрешение по микросекундам на время обработки запроса (% D), чтобы помочь восстановить последовательность запросов, я хотел бы посмотреть на это по отношению к временам нескольких запросов созданный определенной страницей. Однако, насколько я могу судить, спецификатор% t обеспечивает точность до ближайшей секунды. Это делает невозможным восстановление исходной последовательности событий.Запись во втором запросе времени в Apache

Есть ли другой способ получить эту информацию в файлах access_log?

TIA

ответ

1

К сожалению, нет. Это было покрыто некоторое время назад (How to timestamp request logs with millisecond accuracy in Apache 2.0), и это все еще верно для самой последней стабильной ветви Apache (2.2.x).

Я знаю, по крайней мере, обходное решение, если вам интересно: вы можете подключать журналы Apache к внешнему процессу (см. Страницу документов на странице http://httpd.apache.org/docs/current/mod/mod_log_config.html в соответствии с директивой «CustomLog»), которая добавила бы метки времени и фактически пишите в файл журнала.

Обратите внимание, что этот метод НЕ фиксирует истинное время запроса RX. Apache не выводит запись журнала доступа до тех пор, пока она не завершит отправку ответа. Кроме того, есть дополнительная переменная задержка, когда Apache записывает в трубу, и ваша timestamper читает ее (возможно, включая некоторую буферизацию, там). Если вы включили директиву Apache BufferLogs, будет больше задержки буферизации переменных. Когда система находится под нагрузкой и, возможно, в других случаях, средняя задержка может легко вырасти до секунды или более.

Если задержки не так уж плохи (то есть, «BufferedLogs off», низкая загрузка системы), вы можете получить довольно тугую оценку путем вычитания значения «% D» из вашей временной метки времени.

Некоторые люди (включая меня) используют протоколы доступа Apache к локальному демону Syslog (через команду «logger» или что-то еще). Демон syslog позаботится о методе timestamping, между прочим.

6

Это возможно с помощью Apache 2.4. Используйте, например, следующий лог-формат вместо% т:

[%{%d/%b/%Y:%H:%M:%S}t.%{msec_frac}t %{%z}t] 

Это даст время как [10/Apr/2012:10:47:22.027 +0000]

Смежные вопросы