是否可以configurationApache为每个子域使用不同的日志文件,即使所有的子域都在同一个VirtualHost容器中?
所以,我只有一个VirtualHost:
<VirtualHost *:80> ServerName example.com ServerAlias test1.example.com test2.example.com test3.example.com </VirtualHost>
我想结束以下日志文件:
/var/log/httpd-access_test1.log /var/log/httpd-access_test2.log /var/log/httpd-access_test3.log
我知道我可以用自定义日志格式和分割日志来做到这一点,但是我想知道是否有办法让Apache为我做。
您只需在每个VirtualHost指令中指定ErrorLog和CustomLog 。 考虑到这一点,您将无法使用ServerAlias并通过正常的性能为每个主机提供单独的日志文件,而无需指定单独的VirtualHost 。
但是,您可以通过脚本pipe理日志,并让脚本创build单独的文件。 看看pipe道日志文件。
您也可以使用后处理脚本,例如利用grepparsing日志。 一个后处理脚本可以在preprotate或preprotate部分下面的nightly logrotate中指定。
Apache 2.2pipe道日志logging
你应该可以使用Apache环境variables来获得这个工作:
LogFormat "%h \"%r\" %>s \"%{Referer}i\" \"%{User-Agent}i\"" vhostformat SetEnvIfNoCase Host example\.com mainlog CustomLog /var/log/httpd-example.log vhostformat env=mainlog SetEnvIfNoCase Host test1\.example\.com vhost1log CustomLog /var/log/httpd-access_test1.log vhostformat env=vhost1log SetEnvIfNoCase Host test2\.example\.com vhost2log CustomLog /var/log/httpd-access_test2.log vhostformat env=vhost2log SetEnvIfNoCase Host test3\.example\.com vhost3log CustomLog /var/log/httpd-access_test3.log vhostformat env=vhost3log