Apache的access.log文件占用太多空间

所以我几个月前把我所有的网站都转到亚马逊的EC2服务上,今天我注意到我的驱动能力在90%以上。 做了一点挖掘,似乎大部分由apache创build的access.log文件正在使用。

我想知道什么是最好的方法来处理这个问题。 我的膝盖反应是编写一个每天运行的小脚本(或者每周,每月,任何),将它们全部压缩并放在其他地方,以备将来我需要时 – 很可能是亚马逊的S3。

这是最好的方法,还是有其他人正在使用的标准做法,我应该遵循?

编辑:要回答评论者,这个服务器目前正在运行的Linux – Ubuntu是精确的

使用logrotate实用程序来旋转日志。 你可以使用postrotate选项来运行一个命令将它们分stream到S3之类的东西

 /usr/bin/s3cmd put /var/log/apache2/access.log.1 s3://your.s3.host/access.log.1 

会诀窍。 你可能会想要使用datext选项,以便你的文件的date如access.log-20120713所以你access.log-20120713脚本变得稍微复杂

 /usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d") s3://your.s3.host/access.log-$(date "+%Y%m%d") 

如果你使用compress选项(推荐)你的postrotate成为

 /usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d").gz s3://your.s3.host/access.log-$(date "+%Y%m%d"),gz 

你应该考虑的第一件事是压缩。 由于Apache日志格式化的方式,它们压缩得非常好。

像Iainbuild议的,logrotate是你的朋友。 它可以处理压缩,并允许您指定要保留日志的时间。

如果你坚持保留所有的日志,你可以设置logrotate来发送你的旧日志,或者用cron设置一个辅助脚本来存储旧的日志到S3或其他地方。

这里有一个很好的资源 ,让你开始使用logrotate,如果你以前从未使用它。