log-splitting within a virtual-host in apache

If like me, you see nginx as a flash in the pan newcomer (released in 2004) and mod_balancer as entirely everything one would require in a load balancer.

Then you might well have some Apache config files that have grown over the years into vast monstrosities of Alias and ProxyPass, then no-one understands what they all do.

So if you have a virtual host like so;

ServerName mystupidwebsite.com
CustomLog logs/access_log

ErrorLog logs/error_log

Alias /somethign /var/somewhere/else
ProxyPass /SomeMiniSite http://my.tomcat.server.local:8080/SomeMiniSite

You might find you want to split the logging for some sub-URI path like so;

/SomeMiniSite -> /var/log/httpd/someotherlogformat.log

One way to achieve that is via setting an environment variable based on the required sub-path like so, and using that to select the CustomLog directive


SetEnvIf Request_URI ^/SomeMiniSite SomeMiniSite
CustomLog logs/myminisite-access.log common env=SomeMiniSite

(you can switch the log format for the other CustomLog location


Apache supports piping the CustomLog like so;

CustomLog "| /usr/local/sbin/log_spltter" combined

Also there appear to be some virtual directives with the  mass virtual hosting examples here;

with some ideas for log splitting based on a custom log format called vcommon

I've not consider what effect this would have on performance, so it would be worth keeping an eye on which is the most resource sucking.