通常 Web 服务器所谓的log文件,就是当浏览器载入一个页面时,会向服务器发出请求,服务器会做出适当的返回,而这些访问都会记录在 log 文件中。
log 文件是一个文本文件,下面是一个例子,各种不同的格式有不同的写法。
下面来介绍四种常见的格式
Common Log Format (CLF),也称之为 NCSA Common Format
这是一个标准化的格式,是最为常见的格式,一开始的时候是由 NCSA 定义的。绝大部分的 log 分析软件都接受该格式的文件。
例子:
127.0.0.1 user-identifier frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
在Apache Web 服务器中的定义方式是这样的:
此处略去相关代码,请查看桌面标准版文章。
W3C Extended Logfile Format
一种可定制的Log格式,只收集用户所需的信息。
在Nginx服务器的配置文件中,我所用的格式是这样的:
remote_addr : 用户的 IP 地址,或者说客户机的 IP 地址。
remote_user : 用户名,用户若使用基本认证的话会有这个。
time_local : 本地时间
request : 请求的内容,包括是 GET 还是 POST,还是 HEAD,路径,何种HTTP格式,是 HTTP/1.1,还是HTTP/1.0,再或者是 HTTP/2.0。
status : 返回的状态码,比如200,301,403等等。
body_bytes_sent : 返回的字节数,就是有多少数据返回到客户浏览器。
http_referer : referer的网址。
http_user_agent : 来访的浏览器或者蜘蛛的 agent 是如何定义的。
http_x_forwarded_for : 记录通过代理,或者CDN访问时的原始用户 IP 地址。