this is obsolete doc -- see http://doc.nethence.com/ instead

Log rotation techniques 

 

 

Logrotate 

Configure /etc/logrotate.d/daemonname. In example for apache, 

/var/log/httpd/*log {
        monthly
        nomissingok
        sharedscripts
        postrotate
                /sbin/service httpd reload > /dev/null 2>/dev/null || true
        endscript
}

 

 

Newsyslog 

NetBSD uses newsyslog, much nicer. 

 

 

Self-made script 

In example each hour, 

mv web11.tgz web12.tgz
mv web10.tgz web11.tgz
mv web9.tgz  web10.tgz
mv web8.tgz  web9.tgz
mv web7.tgz  web8.tgz
mv web6.tgz  web7.tgz
mv web5.tgz  web6.tgz
mv web4.tgz  web5.tgz
mv web3.tgz  web4.tgz
mv web2.tgz  web3.tgz
mv web1.tgz  web2.tgz
mv web.tgz   web1.tgz
mv web.log   web.old
/usr/sbin/apachectl graceful
sleep 300
tar cvfz web.tgz web.old

 

 

Crontab 

The right way, 

crontab -e

in example (monthly), 

0 0 1 * * /usr/bin/newsyslog 

The wrong way, 

cat /etc/cron.daily/logrotate

in example, 

#!/bin/sh
 
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0