Php

為什麼 apache 每個請求都寫兩個訪問日誌輸出?

  • May 16, 2016

我們目前在 docker 上執行一個 apache2/mod-php 站點,部署到 google kubernetes。為了利用Google云日誌記錄的嚴重性級別過濾,我LogFormat在我們的 apache.conf 中創建了一個將日誌輸出寫入結構化 JSON 的文件。現在我在我們的日誌中看到兩個訪問日誌輸出。1 是格式正確的 CustomLog,另一個似乎是某種預設訪問日誌。

這是apache conf:

 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"}

我嘗試了許多不同的配置,但似乎都沒有解決問題。知道這個不需要的訪問日誌輸出來自哪裡嗎?

所以它看起來像這個版本的 php-apache for docker: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

引用自:https://serverfault.com/questions/776715