灰儿 发表于 2010-12-27 10:22:04

Apache 日志管理

本帖最后由 灰儿 于 2010-12-27 10:24 编辑

配置访问日志
CustomLog
CustomLog 指令用来对服务器的请求进行日志记录。
格式为:
格式1:CustomLog 访问日志文件名 记录格式说明串|格式昵称
格式2:CustomLog "|管道程序名 访问日志文件名" 记录格式说明串|格式昵称
其中:
访问日志文件名:除非文件位置用”/“开头,否则所制定的文件位置是相对于 ServerRoot 目录的相对路径
格式昵称:使用 LogFormat 指令将一个记录格式说明串赋以一个名称
记录格式说明串:用字符串和格式说明符(以%开头)指定日志记录的内容
管道程序名:管道符”|”后面紧跟着一个程序的路径,这个程序把日志从标准输入设备中读入并处理。

在 Ubuntu 的 Apache 默认配置中并没有使用 CustomLog 设置访问日志,若您希望记录访问日志,您需要在虚拟主机的配置文件中分别设置,例如:在 /etc/apache2/sites-available/default 中有如下的设置:
CustomLog /var/log/apache2/access.log combined

LogFormat
为了便于分析 Apache 的访问日志,Apache 的默认配置文件中,按记录的信息不同(用不同格式昵称说明不同的信息)将访问日志分为4类,并由 LogFormat 指令定义了昵称,如表所示。
格式分类格式昵称说明   
普通日志格式(common log format,CLF)common大多数日志分析软件都支持这种格式   
参考日志格式(referer log format)referer记录客户访问站点的用户身份   
代理日志格式(agent log format)agent记录请求的用户代理   
综合日志格式(combined log format)combined结合以上三种日志信息

LogFormat 指令用于定义访问日志的记录格式。格式为:
LogFormat "记录格式说明串" 格式昵称
从 /etc/apache2/apache2.conf 中可知,在 Ubuntu 的 Apache 中定义了下面的 4 种类型的访问日志:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

由于综合日志格式简单地结合了3种日志信息,所以在配置访问日志时,要么使用一个综合文件进行记录,要么使用分离的多个(1-3)文件记录。通常使用一个综合日志格式文件进行记录,配置为:
CustomLog /var/log/apache2/access.log combined
若使用3个文件分别进行记录,配置为:
CustomLog /var/log/apache2/access.log common
CustomLog /var/log/apache2/referer.log referer
CustomLog /var/log/apache2/agent.log agent

下面的指令组:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
与下面的指令等效:
CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b"
通常我们配置访问日志时,使用先使用 LogFormat 指令定义格式昵称,然后再在 CustomLog 指令中引用昵称的方法。
格式说明符
在使用 LogFormat 和 CustomLog 指令中为了说明要记录的日志内容,可以使用的常用格式说明符如下表。
格式说明符说明   
%v进行服务的服务器的标准名字 ServerName,通常用于虚拟主机的日志记录中。   
%h客户机的 IP 地址。   
%l从identd服务器中获取远程登录名称,基本已废弃。   
%u来自于认证的远程用户。   
%t连接的日期和时间。   
%rHTTP请求的首行信息,典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。经常可能出现的 METHOD 是 GET、POST 和 HEAD;RESOURCE 是指浏览者向服务器请求的文档或 URL;PROTOCOL 通常是HTTP,后面再加上版本号,通常是 HTTP/1.1。   
%>s响应请求的状态代码,一般这项的值是 200,表示服务器已经成功地响应浏览器的请求,一切正常;以 3 开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置;以 4 开头的状态代码表示客户端存在某种错误;以 5 开头的状态代码表示服务器遇到了某个错误。   
%b传送的字节数(不包含HTTP头信息),将日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
%{Referer}i记录引用此资源的网页。   
%U请求的URL路径,不包含查询串。   
%{User-Agent}i使用的浏览器信息。

访问日志文件举例
下面是从一个访问日志文件中截取的 3 条记录。
$ sudo tac /var/log/apache2/access.log
192.168.0.66 - - "GET /index.html HTTP/1.1" 200 1185 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)"
192.168.0.77 - - "GET /manual/style/manual.css HTTP/1.1" 404 1203 "http://192.168.0.100/manual/logs.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
192.168.0.66 - - "GET /dokuwiki/lib/exe/css.php?s=print HTTP/1.1" 304 - "http://192.168.0.191/dokuwiki/doku.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12"
将各项信息分离于下表所示。
格式说明符举例1举例2举例3   
%h192.168.0.66192.168.1.77192.168.0.66   
%l-(表示没有取得信息)--   
%u---   
%t   
%r“GET /index.html HTTP/1.1”“GET /manual/style/manual.css HTTP/1.1”“GET /dokuwiki/lib/exe/css.php?s=print HTTP/1.1”   
%>s200404304   
%b11851203-   
%{Referer}i”-”“http://192.168.0.100/manual/logs.html”“http://192.168.0.191/dokuwiki/doku.php”   
%{User-Agent}i“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)”“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12”   
由于整个格式说明字符串是放在”“之内的,所以若要输出的日志信息内含有引号,需要将”前加转义符\。例如:若要输出子串”GET /apache_pb.gif HTTP/1.0”,则格式字符串为\”%r\”。


页: [1]
查看完整版本: Apache 日志管理