私は本当にこれについていくらかの助けが必要です。私のサーバーには複数の仮想ホストがあり、各仮想ホストにはアクセスログがあります。サーバー上に存在する各仮想ホストのLogFormatをカスタマイズできる必要があります。 httpd.conf
でLogFormatを変更しましたが、実際にはマスターアクセスログにのみ影響し、仮想ホストには影響しません。
これが私のLogFormatです:
<IfModule log_config_module>
LogFormat "%v:%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{CF-Connecting-IP}i" combinedvhost
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{CF-Connecting-IP}i" combined
LogFormat "%h %l %u %t \"%r\" %>s %b %{CF-Connecting-IP}i" common
CustomLog "logs/access_log" combined
CustomLog logs/access_log combinedvhost
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{CF-Connecting-IP}i" combinedio
</IfModule>
</IfModule>
<IfModule mod_log_config.c>
LogFormat "%v:%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{CF-Connecting-IP}i" combinedvhost
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{CF-Connecting-IP}i" combined
LogFormat "%h %l %u %t \"%r\" %>s %b %{CF-Connecting-IP}i" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log common
CustomLog logs/access_log combined
CustomLog logs/access_log combinedvhost
</IfModule>
上記のLogFormatは、次の場所にあるマスターアクセスログにのみ影響します。/usr/local/Apache/logs/access_log
ただし、アクセスログが次の場所にあるサーバー上の仮想ホストには影響しません。/home/username/access-logs/domain.com
LogFormat自体に何か問題があるのか、何かが足りないのかわかりません。私はこの問題を解決するために何時間も費やしましたが、解決策が見つかりませんでした。誰かがこれに光を当てることができれば、私は大いに感謝します。ありがとうございました。
秘訣は、Apache構成ファイルの各VirtualHost内にCustomLogディレクティブを追加することです。例えば:
<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /var/www/www.site1.com/htdocs
CustomLog /var/log/Apache/www.site1.com-access.log combined
ErrorLog /var/log/Apache/www.site1.com-error.log
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
DocumentRoot /var/www/www.site2.com/htdocs
CustomLog /var/log/Apache/www.site2.com-access.log combined
ErrorLog /var/log/Apache/www.site2.com-error.log
</VirtualHost>
もっと便利な例があります ここ 。
秘訣は、LogFormatとCustomLogの両方を同じVirtualHostプールに含める必要があるということです。
<VirtualHost *:443>
ServerName my.site.com
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D " commonvhost
ErrorLog "|/opt/mw/Apache-2.4.25-instance1/bin/rotatelogs /apps/logs/my.site.com-443-error.%Y.%m.%d.log 86400"
CustomLog "|/opt/mw/Apache-2.4.25-instance1/bin/rotatelogs /apps/logs/my.site.com-443-access.%Y.%m.%d.log 86400" commonvhost
</VirtualHost>
<VirtualHost *:80>
ServerName my.site.com
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D " commonvhost
ErrorLog "|/opt/mw/Apache-2.4.25-instance1/bin/rotatelogs /apps/logs/my.site.com-80-error.%Y.%m.%d.log 86400"
CustomLog "|/opt/mw/Apache-2.4.25-instance1/bin/rotatelogs /apps/logs/my.site.com-80-access.%Y.%m.%d.log 86400" commonvhost
</VirtualHost>