经典的apache下access_log日志文件解析

26点 林涛 10333℃ 0评论

由于需要对web日志做分析,所以自己研究了一下access日志的格式,一个典型的access日志格式如下:

218.19.140.242 – – [10/Dec/2010:09:31:17 +0800] "GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1" 200 1933 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"

拆开后可以看到一共有9项:

218.19.140.242


[10/Dec/2010:09:31:17 +0800]
"GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1"
200
1933
"-"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"


1) 218.19.140.242 

    这是一个请求到apache服务器的客户端ip,默认的情况下,第一项信息只是远程主机的ip地址,但我们如果需要apache查出主机的名字,可以将 HostnameLookups设置为on,但这种做法是不推荐使用,因为它大大的减缓了服务器.另外这里的ip地址不一定就是客户主机的ip地址,如果 客户端使用了代理服务器,那么这里的ip就是代理服务器的地址,而不是原机.

 

2) – 

    这一项是空白,使用"-"来代替,这个位置是用于标注访问者的标示,这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的 email地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回。很早的时候,那时Netscape 0.9还占据着统治地位,这个位置往往记录着浏览者的email地址。然而,由于有人用它来收集邮件地址和发送垃圾邮件,所以它未能保留多久,很久之前市 场上几乎所有的浏览器就取消了这项功能。因此,到了今天,我们在日志记录的第二项看到email地址的机会已经微乎其微了。 

 

3) – 

    这一项是用来记录用户HTTP的身份验证,如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。 


4) [10/Dec/2010:09:31:17 +0800] 

    第四项是记录请求的时间,这个信息用方括号包围,而且采用所谓的"公共日志格式"或"标准英文格式":[day/month/year:hour:minute:second zone];因此,上例日志记录表示请求的时间是2010年10月10日09:31:17。时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时,即东八区。 


5) "GET /..haizhu_tianhe.xml HTTP/1.1" 

    这一项整个记录中最有用的信息,首先,它告诉我们的服务器收到的是一个GET请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时HTTP/1.1,整个格式为"%m %U%q %H",即"请求方法/访问路径/协议"

 

6) 200 

    这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为200,表示服务器已经成 功的响应了客户端的请求,一般来说,这项值以2开头的表示请求成功,以3开头的表示重定向,以4开头的标示客户端存在某些的错误,以5开头的标示服务器端 存在某些错误。

 

7) 1933 

    这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少;它还告诉我们传输是否被打断(即,该数值是否和文件的大小相同)

 

8) – 

    为访客来源(Referer)。这一段是告诉我们访客是从哪里来到这一个网页。有可能是你的网站其他页,有可能是来自搜索引擎的搜索页等。通过这条来源信息,你可以揪出盗链者的网页。 

 

9) "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)" 

    这项主要记录客户端的浏览器信息。

 

另外介绍一下error_log的格式:

error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,通常服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件。随意摘取一个记录,如下:

[Fri Dec 10 15:03:59 2010] [error] [client 218.19.140.242] File does not exist: /home/htmlfile/tradedata/favicon.ico

同样也是分为几个项
 

[Fri Dec 10 15:03:59 2010]
[error]
[client 218.19.140.242]
File does not exist: /home/htmlfile/tradedata/favicon.ico


1) [Fri Dec 10 15:03:59 2010] 记录错误发生的时间,注意,它跟我们上面access_log记录的时间格式是不同的

2) [error] 这一项为错误的级别,根据LogLevel指令来控制错误的类别,上面的404是属于error级别

3) [client 218.19.140.242] 记录客户端的ip地址

4) File does not exist: /home/htmlfile/tradedata/favicon.ico 这一项首先对错误进行了描述,例如客户端访问一个不存在或路径错误的文件,就会给出404的提示错误

如需转载请注明: 转载自26点的博客

本文链接地址: 经典的apache下access_log日志文件解析

转载请注明:26点的博客 » 经典的apache下access_log日志文件解析

喜欢 (1)
发表我的评论
取消评论

表情