web-dev-qa-db-ja.com

Apache仮想ホスト用にLogFormatをカスタマイズする方法は?

私は本当にこれについていくらかの助けが必要です。私のサーバーには複数の仮想ホストがあり、各仮想ホストにはアクセスログがあります。サーバー上に存在する各仮想ホストの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自体に何か問題があるのか​​、何かが足りないのかわかりません。私はこの問題を解決するために何時間も費やしましたが、解決策が見つかりませんでした。誰かがこれに光を当てることができれば、私は大いに感謝します。ありがとうございました。

1
Mina Hafzalla

秘訣は、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>

もっと便利な例があります ここ

2
boot13

秘訣は、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>
0
Puneet Khurana