Назад | Перейти на главную страницу

Увеличьте точность отметки времени журнала apache 2.2, чтобы включить микросекунды

Подобный вопрос уже задавался Переполнение стека но не было дано полезного ответа, и я думаю, что он подходит здесь лучше.

Мне нужно зарегистрировать микросекунды или миллисекунды первого времени ответа. Я следовал формату, указанному в документации для apache 2.2. http://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. В чем может быть проблема?

Как написано в официальной документации, которую вы связали:

%{UNIT}T    

Время, затраченное на обслуживание запроса, в единицах времени, заданных UNIT. Допустимые единицы измерения: миллисекунды в миллисекундах, микросекунды в миллисекундах и секунды в секундах. Использование s дает тот же результат, что и% T без какого-либо формата; использование us дает тот же результат, что и% D. Объединение% T с единицей доступно в 2.2.30 и новее.

Я не знаю, как решить проблему с Apache 2.2.3, но ...

Если ничего не помогает, изучите следующее (в зависимости от того, насколько это важно для вас)

  1. Получите последнюю версию apache и скомпилируйте ее, поскольку она не выполняет то, что должна, и может быть ошибкой. Может получится, не помешает попробовать
  2. Если это не сработает, отредактируйте код и заставьте его делать то, что вы хотите.

Я только что тестировал 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