访问日志与服务器数据又有不同:每一条访问日志都是有意义的,而且访问日志通常会在相隔较久(当然我们运维人员正是要通过各种努力让这个“较久”变得更短)之后被要求重放 ——因为这时候出现的问题大多是“偶然”性的、不影响服务器本身性能的、难以快速反馈的隐藏 bug。所以在有条件的情况下,应该保留全部的访问日志至少 3个月以上!
基本上 Web服务器软件都有自己的默认日志记录项。具体如下。
a.在 Apache中,叫做 combined,格式定义如下。
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
b.在 Nginx中,叫做 main,格式定义如下。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
c.在 Squid中,叫做 squid,格式定义如下。
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
在传统的静态页面访问情况下,基本上这些已经足够了。不过针对动态页面的情况,还是要特意指出另一个内容,值得,至少是在排查故障期间值得,被记录下来。那就是 Cookie。
a.Apache中的 Cookie记录方法
%{cookie}n
b.Nginx中的 Cookie记录方法
$http_cookie
在 Nginx中,还提供了另一种精确定位的记录方式:在可以确定只需要记录 Cookie中的某一个 key:value对时,可以使用如下变量单独记录这个 value即可。
$cookie_KEY
c.Squid中的 Cookie记录方法
%{Cookie}>h