Подобный вопрос уже задавалсяПереполнение стека но полезного ответа не было дано, и я думаю, что это больше подходит сюда.
Мне нужно записать микросекунды или миллисекунды времени первого ответа. Я следовал формату, указанному в документации для apache 2.2http://httpd.apache.org/docs/2.2/mod/mod_log_config.html(Я использую apache 2.2.3), но это не работает. Я изменил формат журнала в /etc/httpd/conf/httpd.conf на:
LogFormat "%h %l %u %t %{usec_frac}t \"%r\" %>s %b %D" test
Вывод, который я получаю:
IPaddress - - [10/Oct/2015:19:47:46 +0200] usec_frac "GET /w/images/thumb/f/fa/Wikiquote-logo.svg/35px-Wikiquote-logo.svg.png HTTP/1.1" 200 1931 86
Так что usec_frac
не решено, но это указано в документации как возможный формат для %{format}t
. Я использую CentOS релиз 5.8 (Final) и я отредактировал httpd.conf с помощью vi. В чем может быть проблема?
решение1
Как написано в официальной документации, ссылку на которую вы дали:
%{UNIT}T
Время, необходимое для обслуживания запроса, в единицах времени, заданных UNIT. Допустимые единицы: ms для миллисекунд, us для микросекунд и s для секунд. Использование s дает тот же результат, что и %T без какого-либо форматирования; использование us дает тот же результат, что и %D. Объединение %T с единицей доступно в версии 2.2.30 и более поздних.
решение2
Я не знаю, как решить проблему с Apache 2.2.3, но...
Если ничего не помогает, рассмотрите следующее (в зависимости от того, насколько это важно для вас):
- Получите последнюю версию apache и скомпилируйте ее, так как она не делает то, что должна, и может быть ошибкой. Может быть, это сработает, не помешает попробовать
- Если это не сработает, отредактируйте код и заставьте его делать то, что вам нужно.
Я только что проверил на 2.4.10 и все работает
127.0.0.1 - - [11/Oct/2015:16:37:50 -0400] 156545 "GET /cgi-bin/test.cgi HTTP/1.1" 200 175 1206218