Bagaimana cara menyesuaikan LogFormat untuk Host Virtual Apache?

1

Saya benar-benar butuh bantuan dengan ini. Server saya memiliki beberapa host virtual, setiap host virtual memiliki log aksesnya, saya harus dapat menyesuaikan LogFormat untuk setiap host virtual yang ada di server. Saya telah memodifikasi LogFormat httpd.conftetapi sebenarnya hanya mempengaruhi log akses master dan bukan host virtual.

Inilah LogFormat saya:

<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 di atas hanya memengaruhi log akses master yang berada di: /usr/local/apache/logs/access_logNamun, ini tidak memengaruhi server virtual mana pun di server yang memiliki log aksesnya di:/home/username/access-logs/domain.com

Saya tidak yakin apakah saya memiliki sesuatu yang salah dalam LogFormat itu sendiri atau saya kehilangan sesuatu. Saya telah menghabiskan banyak waktu untuk memecahkan masalah ini tetapi tidak menemukan solusi. Saya akan sangat menghargai jika seseorang dapat menjelaskan hal ini. Terima kasih.

Mina Hafzalla
sumber

Jawaban:

2

Caranya adalah dengan menambahkan arahan CustomLog di dalam setiap VirtualHost di file konfigurasi Apache Anda. Sebagai contoh:

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

Ada contoh yang lebih berguna di sini .

boot13
sumber
Bisakah Anda menguraikan itu (bagaimana melakukannya)?
fixer1234
0

Triknya adalah Anda harus memiliki LogFormat dan CustomLog di kumpulan VirtualHost yang sama


<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>
Puneet Khurana
sumber