对于站长而言,最关心的当属网站的访问情况了,可能大家平常用得多的都是站点统计,例如 51.la ,cnzz, Google Analytics 等等,却忽略了Apache的access日志!


Apache的日志能够详细记录网站的每一个请求,供管理员参考,特别是在网站出现问题的时候,Apache日志文件能提供很多有用的信息,通过分析日志文件,找出网站问题所在。


然而Apache默认的日志格式可能并不能满足每一个人的胃口,有时候我们需要定制Apache日志的格式和内容,比如增加我们感兴趣的内容,删掉我们不感兴趣的内容,或者是改变日志文件记录的格式等等。


在Apache的httpd.conf文件中,通过LogFormat和CustomLog指令可以实现自定义日志文件格式和内容的目的。


LogFormat和CustomLog的格式化参数是一个字符串,这个字符串会在每次请求发生的时候,被记录到日志文件中去。它可以包含被原 样写入日志的文本字符串以及控制字符如:“\t”、“\n”, 其他的特殊字符均可通过反斜杠转义。请求本身的情况将通过在格式字符串中放置各种“%”转义的方式来记录。


下表列出了Apache日志格式字符串的含义


<!-- <br /> #logstyle tr td{<br /> border: 1px solid rgb(212, 239, 247);<br /> width:98%;<br /> }<br /> #logstyle , #logstyle table{<br /> width:98%;<br /> }<br /> -->


%%

百分号(Apache2.0.44或更高的版本 )

%a

远端IP地址

%A

本机IP地址

%B

除HTTP头以外传送的字节数

%b

以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’- ‘而不是0。

%{Foobar}C

在请求中传送给服务端的cookieFoobar的内容。

%D

服务器处理本请求所用时间,以微为单位。

%{FOOBAR}e

环境变量FOOBAR的值

%f

文件名

%h

远端主机

%H

请求使用的协议

%{Foobar}i

发送到服务器的请求头Foobar: 的内容。

%l

远端登录名(由identd而来,如果支持的话),除非IdentityCheck 设为”On “,否则将得到一个”-”。

%m

请求的方法

%{Foobar}n

来自另一个模块的注解Foobar 的内容。

%{Foobar}o

应答头Foobar: 的内容。

%p

服务器服务于该请求的标准端口。

%P

为本请求提供服务的子进程的PID。

%{format}P

服务于该请求的PID或TID(线程ID),format 的取值范围为:pid 和tid (2.0.46及以后版本 )以及hextid (需要APR1.2.0及以上版本)

%q

查询字符串(若存在则由一个”? “引导,否则返回空串)

%r

请求的第一行

%s

状态。对于内部重定向的请求,这个状态指的是原始 请求的状态,—%>s 则指的是最后请求的状态。

%t

时间,用普通日志时间格式(标准英语格式)

%{format}t

时间,用strftime(3) 指定的格式表示的时间。(默认情况下按本地化格式)

%T

处理完请求所花时间,以秒为单位。

%u

远程用户名(根据验证信息而来;如果返回status(%s )为401,可能是假的)

%U

请求的URL路径,不包含查询字符串。

%v

对该请求提供服务的标准ServerName 。

%V

根据UseCanonicalName 指令设定的服务器名称。

%X

请求完成时的连接状态:


(在1.3以后的版本中,这个指令是 %c ,但这样就和过去的SSL语法: %{var}c 冲突了)

%I

接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio 模块。

%O

发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio 模块。

X =

连接在应答完成前中断。

+ =

应答传送完后继续保持连接。

- =

应答传送完后关闭连接。

 


一些常见的格式串:

通用日志格式(CLF)
“%h %l %u %t \”%r\” %>s %b”
带虚拟主机的通用日志格式
“%v %h %l %u %t \”%r\” %>s %b”
NCSA扩展/组合日志格式
“%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-agent}i\”"
Referer日志格式
“%{Referer}i -> %U”
Agent(Browser)日志格式
“%{User-agent}i”