循环转存日志

其实我也不知道怎么翻译才好... 英文叫做 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

results matching ""

    No results matching ""