类似的问题已经问过堆栈溢出 但没有给出有用的答案,我认为这里更适合。
我需要记录第一次响应时间的微秒或毫秒。我遵循了 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(最终版),并使用 vi 编辑了 httpd.conf。这里可能存在什么问题?
答案1
正如您链接的官方文档中所写:
%{UNIT}T
处理请求所用的时间,以 UNIT 给出的时间单位表示。有效单位为 ms(毫秒)、us(微秒)和 s(秒)。使用 s 得到的结果与 %T 相同(无任何格式);使用 us 得到的结果与 %D 相同。2.2.30 及更高版本支持将 %T 与单位组合使用。
答案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