【问题标题】:apache web server logging - custom log files vs. general log fileapache web server logging - 自定义日志文件与一般日志文件
【发布时间】:2013-01-06 01:24:09
【问题描述】:

当我没有在我的 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,像壁虎)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, 像 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 -

我这样定义日志文件:

CustomLog 日志/DOMAIN-access_log common

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

【问题讨论】:

标签: linux apache logging


【解决方案1】:

你没有说你使用的是什么风格的 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

您还应该查看Custom Log Formats 的文档。

【讨论】:

  • 我应该在哪个文件中找到 LogFormats?我有一个 domain.conf 文件,我在其中定义了虚拟主机。我必须在这个文件或另一个文件中定义 LogFormat 吗?我正在使用 cent-os。
【解决方案2】:

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

LogFormat "%h %l %u %t \"%r\" %>s %b "%{User-agent}i" common

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2016-08-18
    • 2016-12-17
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多