Apache Web 服务器日志记录 - 自定义日志文件与常规日志文件



当我没有在conf文件的虚拟主机部分中指定日志文件时,日志将写入httpd.conf(=access_log)中指定的文件中。日志条目如下所示:

SOMEIP - - [22/Jan/2013:18:

34:08 +0100] "GET/HTTP/1.1" 200 1752 "-" "Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/SOMEIP Safari/537.17"

SOMEIP - - [22/Jan/2013:18:34:08 +0100] "GET/img/homepage_bg.png HTTP/1.1" 304 - "http://DOMAIN/" "Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.17 (KHTML, like Gecko) C$

但是当我在虚拟主机部分中定义日志文件时,新的日志文件包含不同的信息:

SOMEIP - - [22/Jan/2013:

18:33:34 +0100] "GET/HTTP/1.1" 200 1752

SOMEIP - - [22/Jan/2013:18:33:34 +0100] "GET/img/homepage_bg.png HTTP/1.1" 304 -

我像这样定义日志文件:

自定义日志日志/域access_log通用

为什么自定义日志包含的信息少于默认所有虚拟主机登录的常规日志?

您需要使用包含用户代理的日志格式定义别名"common"。

LogFormat "%h %l %u %t \"%

r\" %>s %b "%{User-agent}i" common

你没有说你正在使用什么版本的Linux。任何配置得体的Apache(例如基于Debian的Ubuntu,Mint等)都已经有一个合适的LogFormat,其中包含其配置中的用户代理。查找与LogFormat匹配的所有行。你应该找到这样的东西:

LogFormat "%v:%p %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" vhost_combined
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

只需对日志文件使用 combined 甚至 vhost_combined 参数:

CustomLog logs/DOMAIN-access_log combined

您还应该查看自定义日志格式的文档。

最新更新