我正试图添加一个监视系统来解析我的Apache日志。我在AWS Elastic Beanstalk AMI(Amazon Linux,ami-655e8e0a)上运行。
查看我的apache conf文件(/etc/httpd/conf/httpd.conf),其中有以下片段:
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog "logs/access_log" common
#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog "logs/access_log" combined
</IfModule>
示例实际日志行如下所示:
1.2.3.4 (-) - - [11/Nov/2018:06:41:59 +0000] "GET /myproj/ HTTP/1.1" 200 1500 "-" "ELB-HealthChecker/2.0"
查看conf文件中“组合”格式的定义,看来IP地址(%h)和时间戳(%t)之间应该只有两个字段,但是我算了三个(“ (-)”和两个“-”)。这将导致监视系统的默认Apache日志解析器失败。
首先,括号中的连字符很奇怪-括号中为什么有连字符?其次,为什么有三个字段而不是两个?第三,当我在conf文件中编辑“组合” LogFormat的行时,它不会更改实际日志。
我发现的唯一解决方法是创建一个具有不同名称的新LogFormat,并更改CustomLog以使其使用它,而不是使用“组合” LogFormat。它看起来像 'combined'LogFormat行,只是它的名称不同,但是日志很好用了-没有多余的((-)'部分,即:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" mytestformat
CustomLog "logs/access_log" mytestformat
实际上默认的“组合”定义是如何添加这个奇怪的“(-)”的?它来自哪里?为什么不能更改它?
谢谢。
答案 0 :(得分:1)
知道了!事实证明,EBS AMI的/etc/httpd/conf.d/wsgi.conf
文件会覆盖这些设置。该文件的最后一行是:
LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
我将其更改为:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
(删除了%h
和括号X-Forwarded-For
周围的括号),现在一切正常!