5月阅读周·HTTP权威指南:日志记录与使用情况跟踪之日志格式篇

举报
叶一一 发表于 2025/05/21 22:50:45 2025/05/21
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不...

引言

HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。

这本书主要包括以下内容:

  • 第一部分描述了Web的基础构件与HTTP的核心技术
  • 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
  • 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
  • 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
  • 第五部分介绍了发布和传播Web内容的技巧。
  • 第六部分是一些很有用的参考附录,以及相关技术的教程。

日志记录与使用情况跟踪

日志格式

目前已有一些日志格式的标准了。本节我们会讨论一些最常见的日志格式。大部分商用和开源的HTTP应用程序都支持以一种或多种常用格式进行日志记录。很多这样的应用程序都支持管理者配置日志格式,创建自定义的格式。应用程序支持管理者使用这些更标准的格式的主要好处之一就在于,可以充分利用那些已构建好的工具处理这些日志,并产生基本的统计信息。有很多开源包和商用包都可用来压缩日志,以进行汇报。使用标准格式,应用程序及其管理员就都可以利用这些包了。

常见日志格式

现在,最常见的日志格式之一就是常用日志格式。这种日志格式最初由NCSA定义,很多服务器在默认情况下都会使用这种日志格式。可以将大部分商用及开源服务器配置为使用这种格式,有很多商用及免费工具都可辅助解析常用日志格式的文件。

列出了几个常见日志格式条目。

209.1.32.44- - [03/Oct/1999:14:16:00-0400] "GET / HTTP/1.0" 2001024
http-guide.com - dg [03/Oct/1999:14:16:32-0400] "GET / HTTP/1.0" 200477
http-guide.com - dg [03/Oct/1999:14:16:32-0400] "GET /foo HTTP/1.0" 404 0

注意,remotehost字段可以是http-guide.com那样的主机名,也可以是209.1.32.44这样的IP地址。第二个(username)和第三个(auth-username)字段之间的破折号说明字段为空。这说明要么是没有进行ident查找(第二个字段为空),要么是没有进行认证(第三个字段为空)。

组合日志格式

另一种常用日志格式为组合日志格式(Combined Log Format),例如Apache服务器就支持这种格式。组合日志格式与常用日志格式很类似。实际上,它就是常用日志格式的精确镜像,只是添加了两个字段。User-Agent字段用于说明是哪个HTTP客户端应用程序在发起已被记录的请求,而Referer字段则提供了更多与请求端在何处找到这个URL的有关信息。

给出了一个组合日志格式的条目。

209.1.32.44- - [03/Oct/1999:14:16:00-0400] "GET / HTTP/1.0" 2001024
"http://www.joes-hardware.com/"   "5.0: Mozilla/4.0 (compatible; MSIE
5.0; Windows 98)"

组合日志格式条目示例中的前七个字段和常用日志格式中的完全一样。两个新字段Referer和User-Agent附加在日志条目的末尾。

网景扩展日志格式

网景进入商用HTTP应用程序领域时,为其服务器定义了很多其他HTTP应用程序开发者已接纳的日志格式。网景的格式是基于NCSA的常用日志格式的,但它们扩展了该格式,以支持与代理和Web缓存这样的HTTP应用程序相关的字段。网景扩展日志格式的前7个字段与常用日志格式中的那些字段完全相同。

网景扩展日志格式

209.1.32.44- - [03/Oct/1999:14:16:00-0400] "GET / HTTP/1.0" 2001024
2001024 0 0215 260
279254 3

网景扩展2日志格式

另一种网景日志格式,网景扩展2日志格式采用了扩展日志格式,并添加了一些与HTTP代理和Web缓存应用程序有关的附加信息。这些附加字段有助于更好地描绘HTTP客户端和HTTP代理应用程序间的交互图景。网景扩展2日志格式是基于网景扩展日志格式的。

网景扩展2日志格式

209.1.32.44- - [03/Oct/1999:14:16:00-0400] "GET / HTTP/1.0" 2001024
2001024 0 0215 260
279254 3 DIRECT FIN FIN WRITTEN

与很多其他HTTP应用程序一样,网景应用程序也有其他的日志格式,包括一种灵活日志格式和一种管理者输出自定义日志字段的方式。这些格式给予管理者更大的控制权,并可以选择在日志中报告HTTP事务处理的哪些部分(首部、状态、尺寸等),以自定义其日志。由于很难预测管理者希望从其日志中获取哪些信息,才添加了管理者配置自定义格式的能力。很多其他的代理和服务器都有发布自定义日志的能力。

Squid代理日志格式

Squid代理缓存是Web上一个很古老的部分。其起源可以回溯到一个早期的Web代理缓存项目(ftp://ftp.cs.colorado.edu/pub/techreports/schwartz/Harvest.Conf.ps.Z)。Squid是开源社团多年来扩展增强的一个开源项目。有很多工具可以用来辅助管理Squid应用程序,包括一些有助于处理、审核及开发其日志的工具。很多后继代理缓存都为自己的日志使用了Squid格式,这样才能更好地利用这些工具。Squid日志条目的格式相当简单。

总结

几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要。这么做出于一系列的原因:跟踪使用情况、安全性、计费、错误检测,等等。

日志记录,研究了通常会记录HTTP事务哪些方面的信息以及一些常见日志格式中所包含的内容。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。