====== Apache - Logs - Use vlogger to split Apache logs ====== **Vlogger** is a program that handles large amounts of virtualhost logs and splits it to separate files. This is a short HOWTO to configure it using Apache. ---- ===== Install vlogger ===== sudo apt install vlogger ---- Make sure you have working Apache server ===== Configuring vlogger ===== Change the LogFormat line (there are multiple LogFormat lines – in this example we will change the one that is named combined) in /etc/apache2/apache2.conf. sudo vi /etc/apache2/apache2.conf Add the string %v at the beginning of it. #LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" combined LogFormat “%v %h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" combined Add the following CustomLog line to the same file (you can put it directly after the LogFormat line) sudo vi /etc/apache2/apache2.conf CustomLog “| /usr/sbin/vlogger -s access.log /var/log/apache2″ combined **NOTE:** Only one CustomLog directive is neededd in the entire Apache configuration. * Please disable all other CustomLog directives, especially in any virtual host configurations. ---- ===== Restart Apache ===== sudo /etc/init.d/apache2 restart **NOTE:** Vlogger will now create subdirectories in the /var/log/apache2 directory, one per virtual host, and create access logs that contain the current date in the file name. * It will also create a symlink called access.log that points to the current log file. ---- ===== Result ===== Assuming there are two virtual hosts, www.example1.com and www.example2.com. Then this is how the /var/log/apache2 directory will look like: ls /var/log/apache2/ returns: www.example1.com/ 09022008-access.log 09012008-access.log access.log -> 09022008-access.log www.example2.com/ 09022008-access.log 09012008-access.log access.log -> 09022008-access.log