Apache配置日志切割

随着网站的访问越来越大,WebServer产生的日志文件也会越来越大,如果不对日志进行分割,那么只能一次将大的日志(如Apache的日志)整个删除,这样也丢失了很多对网站比较宝贵的信息,因为这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等,因此管理好这些海量的日志对网站的意义是很大的。

方法1:使用rotatelogs(apache自带的工具)每隔一天记录一个日志

辑Apache的主配置文件,更改内容如下:
注释掉如下两行


ErrorLog logs/error_log

CustomLog logs/access_logcommon

然后添加如下两行

ErrorLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/error_%Y%m%d.log 86400"

CustomLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined

注:其中86400为轮转的时间单位为秒  

由于apache自带的日志轮询工具rotatelogs,据说在进行日志切割时容易丢日志,因此我们通常使用cronolog进行日志轮询。

方法2、使用 cronolog 为每一天建立一个新的日志

下载安装cronolog程序 

[root@www ~]# tar zxf cronolog-1.6.2.tar.gz

[root@www~]# cd cronolog-1.6.2/

[root@wwwcronolog-1.6.2]# ./configure && make && make install

 

主配置文件中的使用方法

ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log"

CustomLog "|/usr/local/sbin/cronolog logs/access-%Y%m%d.log" combined

如果Apache中有多个虚拟主机,最好每个虚拟主机中放置一个这样的代码,并将日志文件名改成不同的名字。

扩展:

这个保证了每天一个文件夹文件夹下每个小时产生一个log

CustomLog "|/usr/local/sbin/cronolog logs /%Y%m%d/access_log.%H" combined

 

按天轮询(生产环境常见用法,推荐使用):
CustomLog "|/usr/local/sbin/cronolog logs/access_www_%Y%m%d.log" combined


按小时轮询(生产环境较常见用法):
CustomLog "|/usr/local/sbin/cronolog logs /access_www_ %Y%m%d%H.log"combined  

注意:

这两个管道日志文件程序还有一点不同之处是使用 cronolog 时如果日志是放在某个不存在的路径则会自动创建目录,而使用rotatelogs 时不能自动创建,这一点要特别注意

posted @ 2019-05-29 15:01  Mr.peter  阅读(360)  评论(0编辑  收藏  举报