为什么 apache 每个请求写入两个访问日志输出?

为什么 apache 每个请求写入两个访问日志输出?

我们目前正在 docker 上运行一个 apache2/mod-php 站点,部署到 google kubernetes。为了利用 google cloud logs 的严重性级别过滤,我LogFormat在我们的 apache.conf 中创建了一个,将日志输出写入结构化 JSON。现在我在我们的日志中看到两个访问日志输出。1 是格式正确的 CustomLog,另一个似乎是某种默认访问日志。

这是 Apache 配置:

  1 LogLevel info
  2 
  3 LogFormat "{\"message\": \"%{X-Forwarded-For}i %l %u %t '%r' %>s %b '%{Referer}i' '%{User-Agent}i'\", \"severity\": \"INFO\"}" common
  4 CustomLog /dev/stderr common
  5 
  6 
  7 ErrorLogFormat "{\"message\": \"[%t] [%l] [pid %P] %F: %E: [client %a] %M\", \"severity\": \"ERROR\"}"
  8 ErrorLog /dev/stderr
  9 
 10 <VirtualHost *:80>
 11   ServerName myhost.com
 12   ServerAlias myhost.com
 13   DocumentRoot /var/www/html/public/
 14 
 15   <Directory />
 16     AllowOverride All
 17     Order allow,deny
 18     Allow from all
 19 
 20     RewriteEngine on
 21     RewriteCond %{REQUEST_FILENAME} !-d
 22     RewriteCond %{REQUEST_FILENAME} !-f
 23     RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
 24   </Directory>
 25 
 26   <Directory ~ "\.svn">
 27     Order allow,deny
 28     Deny from all
 29   </Directory>
 30 
 31   <Directory ~ "\.git">
 32     Order allow,deny
 33     Deny from all
 34   </Directory>
 35 
 36   RemoteIPHeader X-Forwarded-For
 37   RemoteIPTrustedProxy 10.0.0.0/24
 38 
 39 </VirtualHost>

我的错误日志和信息日志在 Google 云存储中正确显示。但是我不断看到其他访问日志条目。

样品:

此日志不应显示

::1 - - [13/May/2016:23:32:06 +0000] "GET /server-status?auto HTTP/1.1" 404 2970 "-" "Sysdig Agent/1.0"

该日志应该显示

{"message": "- - - [13/May/2016:23:32:06 +0000] 'GET /server-status?auto HTTP/1.1' 404 2720 '-' 'Sysdig Agent/1.0'", "severity": "INFO"}

我尝试了许多不同的配置,但似乎都无法解决问题。您知道这些不需要的访问日志输出来自哪里吗?

答案1

因此,docker 的这个 php-apache 版本看起来像是:FROM php:5.5-apache将自定义日志输出发送到进程。这很有意义,因为您希望docker log在运行时实际输出一些内容。

为了解决这个问题,我们将注释掉以下几行:

45 LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
46 LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
47 LogFormat "%h %l %u %t \"%r\" %>s %O" common
48 LogFormat "%{Referer}i -> %U" referer
49 LogFormat "%{User-agent}i" agent
50 
#51 CustomLog /proc/self/fd/1 combined

相关内容