每个子域有不同的Apache日志文件?

是否可以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指令中指定ErrorLogCustomLog 。 考虑到这一点,您将无法使用ServerAlias并通过正常的性能为每个主机提供单独的日志文件,而无需指定单独的VirtualHost

但是,您可以通过脚本pipe理日志,并让脚本创build单独的文件。 看看pipe道日志文件。

您也可以使用后处理脚本,例如利用grepparsing日志。 一个后处理脚本可以在preprotatepreprotate部分下面的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