循环转存日志
其实我也不知道怎么翻译才好... 英文叫做 rotate log, 大概的意思是按照时间或大小将日志循环, 如果到了设定的日期或者日志的大小达到阀值之后, 就会自动将日志保存到别处, 然后开启一个新的日志, 这样就不会使得日志过于庞大. 如果按照时间循环的话, 就便于日志的整理和归档.
不仅是apache, 好多服务都可以这样弄, 配置文件都在/etc/logrotate.d/
目录下:
➤ ls /etc/logrotate.d/
apport dpkg php5-fpm rsyslog unattended-upgrades
apt mysql-server pm-utils speech-dispatcher upstart
cups-daemon nginx ppp ufw
➤
作者在这里介绍了apache的配置:
# vi /etc/logrotate.d/apache
/usr/local/apache2/logs/access_log
/usr/local/apache2/logs/error_log {
size 100M
compress
dateext
maxage 30
postrotate
/usr/bin/killall -HUP httpd
ls -ltr /usr/local/apache2/logs | mail -s
"$HOSTNAME: Apache restarted and log files rotated"
[email protected]
endscript
}
说明:
size 100M
当日志文件到了100M, 系统就会转存日志. 100M可以改成100K, 100G.compress
压缩转存的日志文件dateext
给转存过的日志文件名添加日期maxage
说明转存的日志文件最多保存多久postrotate and endscript
在这两个参数之间的命令将会在转存完毕后执行. 这里是把日志通过邮件发送了出去.
添加完了可以测试下效果:
# /etc/cron.daily/logrotate
然后:
# ls /usr/local/apache2/logs
access_log
error_log
access_log-20110716.gz
error_log-20110716.gz