2024年3月13日发(作者:)

squid 日志文件

1.时间戳

请求完成时间,以Unix纪元(UTC 1970-01-01 00:00:00)以来的秒数表示,它是毫秒级的。squid使用

这种格式而不是人工可读的时间格式,是为了简化某些日志处理程序的工作。

可以使用一个简单的perl命令来转化Unix时间戳到本地时间,例如:

perl -pe 's/^d+.d+/localtime($&)/e;'

2.响应时间

对HTTP事务来说,该域表明squid花了多少时间来处理请求。在squid接受到HTTP请求时开始计时,在

响应完全送出后计时终止。响应时间是毫秒级的。

对ICP查询来说,响应时间通常是0。这是因为squid回答ICP查询非常迅速。甚至,squid在接受到ICP

查询和发送完响应之间,不会更新进程时钟。

尽管时间值是毫秒级的,但是精度可能是10毫秒。在squid负载繁重时,计时变得没那么精确。

3.客户端地址

该域包含客户端的IP地址,或者是主机名--假如激活了log_fqdn。出于安全或隐私的理由,你可能需要

使用client_netmask指令来掩盖客户端地址的一部分。然而,这样让来自同一客户端的组请求变得不可能。

4.结果/状态码

该域包含2个token,以斜杠分隔。第一个token叫结果码,它把协议和事务结果(例如TCP_HIT或

UDP_DENIED)进行归类。这些是squid专有的编码,在13.2.1节里有定义。以TCP_开头的编码指HTTP请

求,以UDP_开头的编码指ICP查询。

第2个token是HTTP响应状态码(例如200,304,404等)。状态码通常来自原始服务器。在某些情形下,

squid可能有义务自己选择状态码。这些编码在HTTP的RFC里定义,在随后的Table 13-1里有概述。

5.传输size

该域指明传给客户端的字节数。严格的讲,它是squid告诉TCP/IP协议栈去发送给客户端的字节数。这就

是说,它不包括TCP/IP头部的overhead。也请注意,传输size正常来说大于响应的Content-Length。传

输size包括了HTTP响应头部,然而Content-Length不包括。

传输size可用于近似的带宽使用分析,但并非精确的HTTP实体size计算。假如需要了解响应的

Content-Length,可在里找到它。

6.请求方式

该域包含请求方式。因为squid客户端可能使用ICP或HTTP,请求方式就可能是HTTP-或ICP-这2种。最

普通的HTTP请求方式是GET。ICP查询总以ICP_QUERY的形式被记载。请见6.1.2.8节关于squid了解的

HTTP方式列表。

该域包含来自客户端请求的URI。大多数记录下来的URI实际是URL(例如,它们有主机名)。

Squid对某些失败使用特殊的记录格式。例如Squid不能解析HTTP请求,或者不能决定URI,这时你可能

见到类似于"error:invalid-request." 的字串出现在URI的位置。例如:

1066036250.603 310 192.0.34.70 NONE/400 1203 GET error:invalid-request - NONE/- -

另外在该域里,也请留心URI里的空格字符。取决于uri_whitespace设置,squid可能在日志文件里打印

URI时带空格字符。若发生这种情况,则阅读文件的日志分析工具可能会遇到麻烦。

在记日志时,squid删掉了在第一个问号(?)之后的所有URI字符,除非禁用了strip_query_terms指令。

8.客户端身份

Squid有2种不同的办法来决定用户的身份。一种是RFC 1413身份协议,另一种来自HTTP验证头部。