This article can still be improved by adding a longer term larger solution for multi-site hosting for the error logs and a logging rotation solution if we are not using Ubuntu. |
By default Apache just keeps it main log files in /var/log/apache2/ as single files,access.log - all incoming requests and responses
error.log - any errors
other_vhosts_access.log - access log for VirtualHosts that don't define their own logfile
This is fine for casual servers. However, as you get more serious the following will happen,
To solve this we need to do log managaement focusing on two things,
If you use apt-get to install Apache on Ubuntu log management is already happening by default. This is done by logrotate. Settings can be found in /etc/logrotate.d/apache2 and the defaults are,
If someone looks up size x please share it here. |
The ubuntu logrotate is great but what about distinguishing between different virtual hosts.
There are two approaches I am aware of and I personally only have figured out approach 1 where each virtual host has its own set of log files which I call "Virtual Host Based Logging". Further information is at the Apache2 Log Files documentation.
This approach is already outlined as part of my Apache Setup article.
There does not seem to be a clear winner in this department. Here is what I looked at that appear to be popular via Google searches.
logroate - use what Ubuntu uses. Some possible references,
http://blog.andrewbeacock.com/2008/02/how-to-use-logrotate-with-apaches.html - talks about using logrotate with Tomcat without requiring a restart to rollover log file.
Vlogger - Similar (and intended as a replacement for) cronolog or httplog. This looks really easy to use, creates symlinks and can can hook into a database. On the negative side, the package seemed last updated in 2005.
Cronolog - the recommended solution from the Apache2 Log Files documentation but it was last updated in 2002. The biggest negative, I could not in 5 minutes and never bothered to go further on figuring out how to pipe for rollover and how to split at the same time. The problem is that during roll over, the cronolog actually stops logging for a short time before writing to a new file.