如何在Apache日志中记录处理时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Apache日志中记录处理时间相关的知识,希望对你有一定的参考价值。
Apache日志中的处理时间Apache的日志有很多可以自己定义的项目,其中一个 %T 能够显示出服务器处理请求所用的时间。我就是对这个的定义发生了疑问,所以做了一些考证。
在Apache2的中文手册中,是这样定义 %T 这个变量的。
%T 处理完请求所花时间,以秒为单位。
在Apache2的英文文档中,定义如下:
%T the time taken to server the request, in seconds.
由此可见,这个时间表示的是服务器处理这个请求的总时间。 而不是Apache服务器解析php脚本,并且输出脚本的时间。因此,我们可以看到同样的一个页面,网速比较慢的用户访问时间会长,而网速较快的用户访问,则时间比较短。
%T记录的是以秒为单位的时间,这对于我们来说是不太够的。因为很多情况下,我们需要保证我们网页的响应速度在1秒以内。从Apache 2.0 开始,提供了一个新的参数 %D。可以记录服务器处理请求的微秒时间(注意和%T的定义不同)。
我在服务器上做了一次测试,代码中嵌入了一个执行时间的检查判断,同时监视日志文件中产生的时间。结果为:页面监测脚本执行时间为10009206毫秒,而日志中记录的是10009838,两者时间并不一样,日志中记录的时间稍微长一些,包含了DNS查询等一系列的过程。
PS:由这个问题也可以衍生出一个如何测算客户端网速的问题。有这样一个办法,在Header中输出服务器的响应时间,用户收到后,判断收到的时间,这个时间差就是在服务器和客户端之间所消耗的时间。
参考资料:
1、Apache 2手册
2、Apache logs: how log does it take to server a request? 参考技术A 在apache的配置文件httpd.conf中找到
ErrorLog logs/error_log及CustomLog logs/access_log common
Linux系统配置方法:
将其改为
ErrorLog “| /usr/local/apache/bin/rotatelogs /home/logs/www/%Y_%m_%d_error_log 86400 480″
CustomLog “| /usr/local/apache/bin/rotatelogs /home/logs/www/%Y_%m_%d_access_log 86400 480″ common
Windows系统下配置方法:
ErrorLog “|bin/rotatelogs.exe logs/site1/error-%y%m%d.log 86400 480″
CustomLog “|bin/rotatelogs.exe logs/site1/access-%y%m%d.log 86400 480″ common
其中common为日志记录格式里设置的名称。
若有多个站点,则应将以上配置写到各站点的VirtualHost节点中,这样才会分开文件记录各站点日志。
附rotatelogs说明
rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ]
选项
logfile
它加上基准名就是日志文件名。如果logfile中包含’%’,则它会被视为用于的strftime(3)的格式字串;否则,它会被自动加上以秒为单位的.nnnnnnnnnn后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime
日志文件回卷的以秒为单位的间隔时间,86400 表示一天,即每天生成一个新的日志文件。
offset
相对于UTC的时差的分钟数。如果省略,则默认为0,并使用UTC时间。比如,要指定UTC时差为-5小时的地区的当地时间,则此参数应为-300,北京时间为+8时间,应设置为480。这样日志里的时间才会和服务器上的时间一致,方便查看日志。
filesizeM
指定回卷时以兆字节为单位的后缀字母M的文件大小,而不是指定回卷时间或时差。 参考技术B 您好,很高兴为您解答。
看下这个帖子:http://www.cnblogs.com/cocowool/archive/2011/05/13/2045640.html
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~本回答被提问者和网友采纳
如何使用 Apache HttpClient 5 启用线路日志记录
【中文标题】如何使用 Apache HttpClient 5 启用线路日志记录【英文标题】:How to enable wire logging with Apache HttpClient 5 【发布时间】:2020-05-23 04:47:51 【问题描述】:Apache HttpClient logging documentation 说:
配置 Log4j 2 的最简单方法是通过 log4j2.xml 文件。日志4j 2 将使用名为 log4j2.xml 的文件自动配置自身 当它出现在应用程序类路径的根目录时。
然后给出可以使用的 XML 示例。这些示例都不起作用,也没有打印任何调试信息。
This answer 表示可以通过将 log4j-core 和 log4j-1.2-api jar 添加到类路径来解决此问题。我添加了 log4j-core-2.9.1.jar 和 log4j-1.2-api-2.9.1.jar 但这并不能解决问题。我正在使用 httpcomponents-client-5.0-beta7 和 httpcomponents-core-5.0-beta11。
具体需要使用哪些jar,具体需要做哪些配置?
【问题讨论】:
到目前为止你做了什么?你提供了什么配置xml?如果有的话,你会遇到什么例外?.. 没有表现出你的努力,不要简单地寻求解决方案。 【参考方案1】:通过实验,我通过包含以下 jar 使其工作:
log4j-api-2.9.1.jar
log4j-core-2.9.1.jar
log4j-slf4j-impl-2.9.1.jar
【讨论】:
以上是关于如何在Apache日志中记录处理时间的主要内容,如果未能解决你的问题,请参考以下文章