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