原来在实验室服务器上安装apache的时候,似乎就有看到按日期生成apache日志的办法,不过那时觉得暂时还没必要,所以就没配置。没想到实验室网站的访问量还不小,开放一个月后,就发现apache的日志文件已经上百兆了,每天更新awstats,都得花好几分钟时间(呵呵,对于真正的大网站,我们这点访问量还是不值得一提的)。于是这两天开始处理按时间分割apahce日志。上网查了一下,似乎apache网站也推荐使用cronolog,于是我就直接使用cronolog来完成工作。

网上安装cronolog的介绍文章相当多,我这里就不重复介绍了。不过因为我使用的是freebsd,所以直接从ports安装,很方便。

安装好后,就需要改apache的配置文件httpd.conf,将原来指定日志文件的地方做一下替换:
CustomLog /home/XXX/logs/www.wangzhongyuan.com-access.log combined
替换成
CustomLog "|/usr/local/sbin/cronolog /home/XXX/logs/www.wangzhongyuan.com-access.log.%Y%m" combined
注:CustomLog之后没有回车:)只是空格
其中,/home/XXX/logs 表示你的log存放的路径;/usr/local/sbin/cronolog为cronolog所在的路径,可以通过 which cronolog 的命令来查看;%Y%m表示按照年月来分割,这样一个月就会生成一个日志文件,如果要按照每天生成一个日志文件,好像是%Y%m%d

然后重启一下apache,就会发现apache日志开始按照日期生成,而原来的apache日志文件就不会再记录新的访问数据了。

这时,如果有使用awstats的人也许会遇到一个问题,因为apache动态生成日志,所以得相应修改awstats中的配置文件。
将awstats配置文件中的LogFile做相应的修改
LogFile="/home/XXX/logs/www.wangzhongyuan.com-access.log"
改为
LogFile="/home/XXX/logs/www.wangzhongyuan.com-access.log.%YYYY-24%MM-24"
其中,我原来一直搞不明白.%YYYY-24%MM-24是什么意思,后来查了很多资料,终于恍然大悟:%YYYY-24 表示24小时之前的年份,%MM-24表示24小时之前的月份,合起来%YYYY-24%MM-24就表示24小时前的年月。为什么要减去一个24呢,这是因为我们在使用awstats分析apache日志的时候,必须分析已经生成的日志。而我们又常常使用cron来自动update,举个例子,当我们于2007年5月1日凌晨1点分析我们网站的apahce日志的时候,我们是要分析前一天也就是2007年4月30日的日志,而不是cron运行的当天5月1日的日志:)这样,减去一个数字,才能够正确得到我们想要分析的apche的日志的文件名。当然,你也可以不用24这个数字,可以根据自己的实际情况来调整:)