0

我正在尝试对传递给我的一组 Apache 访问日志执行一些数据分析,但我注意到这些日志似乎不是传统格式(基于我在网上找到的一些其他 Apache 日志示例)。以下是从我的一个日志文件中提取的一行(经过一些匿名化处理):

2013-08-25 10:06:11 EDT - "GET http://www.siteaddress.com/section/aaa/z/directory HTTP/1.1" 404 1677 1.2.181.171 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)" - 0 155311 -

有什么方法可以找出记录这些日志的格式吗?也就是说,我将如何为这个文件获取某种标题?Ps.:我可以访问正在捕获这些日志的服务器,并且可以使用它来查找该信息。

编辑1:有人告诉我检查/etc/apache2/httpd.conf的内容,我发现它是空的。

编辑 2:在apache2.conf中找到了以下相关部分,但我不太确定这些是否与我在日志中看到的相符。

# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i

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

编辑 3:/etc/apache2/sites-available/hub 中找到它,它似乎符合我的格式(非常感谢!)

LogFormat "%{%Y-%m-%d %H:%M:%S %Z}t %u \"%r\" %>s %B %a \"%{Referer}i\" \"%{User-Agent}i\" - %T %D -"
4

2 回答 2

1

在基于 debian 的发行版中,配置被拆分为多个文件。主要配置是/etc/apache2/apache2.conf,而所有 vHosts(默认使用)都配置在/etc/apache2/sites-available(虽然它们可能不活动,但是当使用a2ensite/etc/apache2/sites-enabled/ 中的符号链接激活虚拟主机时,文件从中获取包括)

如果你从来没有弄乱过配置,日志格式应该在 /etc/apache2/sites-available/default容器VirtualHostot 中的 apache2.conf 中设置

于 2013-11-14T22:26:02.540 回答
1

您可以在其中一个 Apache 配置文件中找到格式规范;根据您的服务器配置,这可能是主配置文件(/etc/apache2/apache2.conf可能是 Debian 及其衍生产品的默认配置,而/etc/httpd/httpd.conf在 Rat Head 系列中很常见),或者在您的日志的虚拟主机的配置文件中看着(/etc/apache2/sites-enabled/*对于 Debian 和公司,上帝只知道 Rat Head 在哪里)。

您要使用的配置指令将是LogFormat,它将格式字符串别名为短名称,或者CustomLog,它使用格式字符串或LogFormat指令中先前定义的短名称来指定实际的日志记录格式。

格式字符串语法在 Apache 文档中有详细说明。

为了节省您一些时间,从观察示例行并拥有相当多的 Apache 日志经验来看,大多数格式似乎是:

<datetime> - "<request method> <url> <HTTP version>" <response status> <response length> <client address> "<request Referer: header value?>" "<request User-Agent: header value>" - ?? <response duration in microseconds?> - <newline>

我不知道涉及问号的部分是什么,但其余部分似乎很明显。

于 2013-11-14T22:26:19.893 回答