Apache 2.4 CustomLog格式:请求持续时间有时不记录

时间:2016-01-25 13:06:11

标签: apache duration

我们在客户环境(Windows)上运行Apache 2.4.9并希望记录请求持续时间以进行某些分析,因此我们将相应的“%D”格式添加到我们正在使用的自定义LogFormat规范中。

这是httpd.conf的日志格式相关部分:

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b %D" common

<IfModule logio_module>
  # You need to enable mod_logio.c to use %I and %O
  LogFormat "%h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>

CustomLog "E:/XXX/httpd/logs/access.log" common

由于没有加载logio,并且由于我们没有引用除“common”之外的任何自定义日志格式,我希望第二个LogFormat“common”对于写入access.log是有效的。注意LogFormat行末尾附近的“%D”,它应该为我提供每个请求的请求持续时间。但实际上,我们看到的日志看起来更像是这样(IP和路径略有混淆):

XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:32 +0000] "POST /x/y/z/keepAliveSession HTTP/1.1" 200 116
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:34 +0000] "POST /x/y/z/keepAliveSession HTTP/1.1" 200 116
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:34 +0000] "POST /x/y/z/keepAliveSession HTTP/1.1" 200 116
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:34 +0000] "GET / HTTP/1.1" 200 6646
XXX.XXX.XXX.125 - - [21/Dec/2015:13:54:37 +0000] "POST /x/y/z/keepAliveSession HTTP/1.1" 200 116 81301
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:38 +0000] "POST /x/y/z/keepAliveSession HTTP/1.1" 200 116
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:40 +0000] "GET /a/b/c/d/des_help.htm HTTP/1.1" 200 3141
XXX.XXX.XXX.26 - - [21/Dec/2015:13:54:41 +0000] "GET /a/b/c/e/f/index.htm HTTP/1.1" 200 9033
XXX.XXX.XXX.121 - - [21/Dec/2015:13:54:39 +0000] "POST /u/v/w/x HTTP/1.1" 200 132 2994469
XXX.XXX.XXX.121 - - [21/Dec/2015:13:54:42 +0000] "POST /u/r/s/se/v?mode=LAX HTTP/1.1" 200 4 31273

如您所见,某些行显示请求持续时间,而其他行则不显示。看起来这与客户端有点相关(注意,来自以26结尾的IP的请求具有持续时间,而以121或125结尾的请求不具有持续时间)。另请注意,完全相同的请求(但由不同的客户)有时会有持续时间,有时不会(参见第1-3和第6行与第5行)。

从其他安装我们从未见过这样的行为,检查Apache更改日志和错误跟踪器也没有发现任何事情。

有任何想法或建议吗?

0 个答案:

没有答案