Flexible log rotation and usage tracking in perl
vlogger [\s-1OPTIONS\s0]... [\s-1LOGDIR\s0]
Vlogger is designed to make webserver log rotation simple and easy to manage. It deals with VirtualHost logs automatically, so only one directive is required to manage all hosts on a webserver. Vlogger takes piped output from Apache or another webserver, splits off the first field, and writes the logs to logfiles in subdirectories. It uses a filehandle cache to avoid resource limitations. It will start a new logfile at the beginning of a new day, and optionally start new files when a certain filesize is reached. It can maintain a symlink to the most recent log for easy access. Optionally, host parsing can be disabled for use in ErrorLog directives.
To use vlogger, you need to add a \*(L"%v\*(R" to the first part of your LogFormat:
LogFormat \*(L"%v %h %l %u %t \\*(R"%r\\*(L" %>s %b \\*(R"%{Referer}i\\*(L" \\*(R"%{User-Agent}i\"" combined
Then call it from a customlog:
CustomLog \*(L"| /usr/sbin/vlogger -s access.log -u www-logs -g www-logs /var/log/apache\*(R" combined
Options are given in short format on the command line.
-a Do not autoflush files. This may improve performance but may break logfile analyzers that depend on full entries in the logs.
-e ErrorLog mode. In this mode, the host parsing is disabled, and the file is written out using the template under the specified \s-1LOGDIR\s0.
-n Disables rotation. This option disables rotation altogether.
-f \s-1MAXFILES\s0 Maximum number of filehandles to keep open. Defaults to 100. Setting this value too high may result in the system running out of file descriptors. Setting it too low may affect performance.
-u \s-1UID\s0 Change user to \s-1UID\s0 when running as root.
-g \s-1GID\s0 Change group to \s-1GID\s0 when running as root.
-t \s-1TEMPLATE\s0 Filename template using Date::Format codes. Default is \*(L"%m%d%Y-access.log\*(R", or \*(L"%m%d%Y-error.log\*(R". When using the -r option, the default becomes \*(L"%m%d%Y-%T-access.log\*(R" or \*(L"%m%d%Y-%T-error.log\*(R".
-s \s-1SYMLINK\s0 Specifies the name of a symlink to the current file.
-r \s-1SIZE\s0 Rotate files when they reach \s-1SIZE\s0. \s-1SIZE\s0 is given in bytes.
-d \s-1CONFIG\s0 Use the \s-1DBI\s0 usage tracker.
-h Displays help.
-v Prints version information.
Vlogger can automatically keep track of per-virtualhost usage statistics in a database. DBI and the relevant drivers (eg. DBD::mysql) needs to be installed for this to work. Create a table in your database to hold the data. A "mysql_create.sql" script is provided for using this feature with MySQL. Configure the dsn, user, pass and dump values in the vlogger-dbi.conf file. The "dump" parameter controls how often vlogger will dump its stats into the database (the default is 30 seconds). Copy this file to somewhere convienient on your filesystem (like /etc/apache/vlogger-dbi.conf) and start vlogger with "-d /etc/apache/vlogger-dbi.conf". You might want to use this feature to easily bill customers on a daily/weekly/monthly basis for bandwidth usage.
\s-1WWW:\s0 http://n0rp.chemlab.org/vlogger