频道栏目
读书频道 > web开发 > php > PHP与MySQL权威指南
1.4.3 访问日志
2013-07-08 15:11:24     我来说两句
收藏   我要投稿

本文所属图书 > PHP与MySQL权威指南

PHPChina官方出品,Discuz !创始人戴志康、UCHome创始人李国德、ThinkPHP创始人刘晨、PHPCMS项目负责人王参加等联袂推荐。本书是目前为止最全面的关于PHP 与MySQL开发技术的书籍之一,系统而全面地讲解了PHP ...  立即去当当网订购

访问日志会记录对Web 服务器的所有请求,其存放文件和记录的格式取决于CustomLog指令,LogFormat 指令可以定义日志的内容格式。对于日志管理,首先必须产生访问日志,然后才能分析日志,从而得到有用的统计信息。下面介绍如何配置服务器的访问日志。

访问日志的记录格式非常灵活,使用风格很像C 语言中的printf()函数的格式。可以通过下面介绍的几种日志格式查看用于mod_log_config 模块的格式字符串。

(1 )通用日志格式(Common Log Format)

LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog "logs/access.log" common

各参数的说明如下:

1 )LogFormat 定义了一种特定的记录格式的字符串,并给它取了个别名叫common ,其中的“% ”表示服务器用某种信息替换,其他字符则不作替换。引号(" )必须加反斜杠转义,以避免被解释为字符串的结束符。格式字符串还可以包含特殊的控制符,如换行符"\n" 和制
表符"\t" 。

2 )CustomLog定义了一个使用指定别名的日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于ServerRoot 的相对路径。

通用日志格式(CLF )的记录格式被许多不同的Web 服务器所采用,并被许多日志分析工具所识别,它产生的记录字符串如下所示:

127.0.0.1 - - [12/Mar/2010:23:04:19 +0800] "GET /test.php HTTP/1.1" 404 206

各参数的说明如下:

1 )127.0.0.1:发送请求到服务器的客户端IP 地址。如果HostnameLookups设为On,则服务器会尝试解析这个IP 地址的主机名并替换此处的IP 地址,但是不推荐这样做,因为它会明显地拖慢服务器,最好是用一个日志后续处理程序来判断主机名,比如logresolve(logresolve 是一个解析Apache访问日志中IP 地址的后处理程序,为了使对名称服务器的影响降到最低,它拥有极为自主的内部散列表缓存,使每个IP 值仅仅在第一次从日志文件中读出时才被解析一次)。如果客户端和服务器之间存在代理,那么记录中的这个IP 地址就是那个代理的IP 地址,而不是客户端的真实IP 地址。

2 )第一个"-":由客户端identd 进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。此信息通常很不可靠,不应该被使用,除非在严格控制的内部网络中。只有将IdentityCheck 指令设为On ,Apache才会试图获取这项信息。

3 )第二个"-":HTTP认证系统得到的访问该网页的客户端标识(userid ),环境变量REMOTE_USER会被设为该值并提供给CGI 脚本。如果状态码是401 ,则表示客户端未通过认证,此值没有意义。如果网页没有设置密码保护,则此项将是"-"。

4 )[12/Mar/2010:23:04:19 +0800] :服务器完成请求处理时的时间,其格式是[ 日/ 月/ 年:时: 分: 秒时区] 。可以在格式字符串中使用 %{format}t  来改变时间的输出形式,其中的format 与C 语言标准库中的strftime()用法相同。

5 )"GET /test.php HTTP/1.1" :客户端发出的包含许多有用信息的请求行。可以看出,该客户端的动作是GET,请求的资源是/test.php ,使用的协议是HTTP/1.1。另外,还可以记录其他信息,如格式字符串"%m %U%q %H" 会记录动作、路径、查询字符串及协议等。

6 )404 :服务器返回给客户端的状态码。该信息非常有价值,因为它指示了请求的结果:成功响应(以2 开头),被重定向(以3 开头)、出错(以4 开头),或产生了服务器端错误(以5开头)。

7 )206 :返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是"-",如果希望记录为"0"的形式,则应该用%B。

(2 )组合日志格式(Combined Log Format)

另一种常用的记录格式是组合日志格式,形式如下:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog "logs/access.log" combined

这种格式与通用日志格式类似,但是多了两个%{header}i 项,其中的header 可以是任何请求头。这种格式的记录如下:

127.0.0.1 - - [13/Mar/2010:00:38:38 +0800] "GET /test.php HTTP/1.1" 404 206 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; QQPinyinSetup 620; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)"

其中,多出来的项是"-",它是"Referer"请求头。此项指明了该请求是从哪个网页提交过来的,如果内容为空,则此项显示"-"。"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1;Trident/4.0; QQPinyinSetup 620; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NETCLR 3.0.30729; Media Center PC 6.0; InfoPath.2)"是"User-Agent" 请求头,此项是客户端提供的浏览器识别信息。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.4.2 错误日志
下一篇:1.5 虚拟主机
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站