Citizens guide to the 21st century
scratch book of what you should know to be a citizen of the 21st century
How we log apache

We have a site specific logfile and one main file for all sites on the server. The main one has a special log format, that allows to see the www adress of the server in the webalizer log:

apache2.conf:LogFormat "%h %l %u %t \"GET %V\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%r\" %P" extended

So here it goes:

ErrorLog "/var/log/apache2/sitename.error.log"
CustomLog "/var/log/apache2/sitename.access.log" combined
CustomLog "/var/log/apache2/main.access.log" extended

This you have to set in the webalizer.conf:

Incremental     yes

Here is how the cronscript looks like:

pre:/etc/apache2# cat /etc/cron.daily/webalizer
#!/bin/sh
# /etc/cron.daily/webalizer: webalizer daily maintenance script
# Written by Remco van de Meent <remco@debian.org>
# Modified by z1 <z1@x21.ch>
WEBALIZER_BIN=/usr/bin/webalizer
WEBALIZER_CONF=/etc/webalizer.conf

# See if the webalizer binary and config file exists
# if not, exit without warning to prevent daily mails
[ -f ${WEBALIZER_BIN} ] || exit 0
[ -f ${WEBALIZER_CONF} ] || exit 0

# Run webalizer quietly
for file in `ls /var/log/apache2/*access*.1`
do
    echo $file
    hostname1=`echo $file|awk '{split($0, a, "/"); sub("\.access\.log\.1","",a[5]); print a[5]}'`
    mkdir /home/weba/public_html/$hostname1
    ${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -D dns_cache.db -N 10 -o /home/weba/public_html/$hostname1 -n $hostname1 -q $file
    ${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -D dns_cache.db -N 10 -o /home/weba/public_html/$hostname1 -n $hostname1 -q /var/log/apache2/$hostname1.access.log
done

exit $?

So how to rerun older logs:

for i in `ls -rv /var/log/apache2/sitename.a*.gz`; do /usr/bin/webalizer -c /etc/webalizer/webalizer.conf -D dns_cache.db -N 10 -o /home/weba/public_html/sitename -n sitename -q $i;  done

Leave a Reply