提高apache 2.2日志时间戳的精确度,包括微秒

StackOverflow已经提出了类似的问题,但没有给出有用的答案,我认为这里比较适合。

我需要logging第一个响应时间的微秒或毫秒。 我遵循的文件中给出的格式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没有parsing,但在文档中被列为%{format}t的可能格式。 我正在使用CentOS版本5.8(最终),我用vi编辑了httpd.conf。 这里可能是什么问题?

正如你在正式文件中写到的那样:

 %{UNIT}T 

以UNIT提供的时间单位服务该请求所用的时间。 有效单位是毫秒,毫秒,毫秒,秒。 使用s给出与%T相同的结果,没有任何格式; 使用我们给出了与%D相同的结果。 将%T与一个单位相结合可在2.2.30及更高版本中获得。

我不知道如何解决你使用Apache 2.2.3的问题,但是…

如果没有其他的工作,看看以下(取决于这对你有多重要)

  1. 获取最新版本的Apache并编译它,因为它没有做它应该做的,可能是一个错误。 也许它会工作,尝试不会有什么伤害
  2. 如果这不起作用,编辑代码,并做它你想做的

我刚刚在2.4.10上testing,它工作

 127.0.0.1 - - [11/Oct/2015:16:37:50 -0400] 156545 "GET /cgi-bin/test.cgi HTTP/1.1" 200 175 1206218