用Apache自带的rotatelogs程序处理apache生成的日志自动截断重新生成,rotatelogs是一个配合Apache管道日志功能使用的简单程序。设置方法如下:
编辑Apache的主配置文件,更改内容如下:
注释掉如下两行
ErrorLog logs/error_log
CustomLog logs/access_log common
然后添加如下两行
ErrorLog "|/path/to/bin/rotatelogs logs/errorlog.%Y-%m-%d-%H_%M_%S 20M +480"
CustomLog "|/path/to/bin/rotatelogs logs/accesslog.%Y-%m-%d-%H_%M_%S 20M +480" common
意义如下:
errorlog.%Y-%m-%d-%H_%M_%S为生成日志的格式,类似于这样:errorlog.2011-04-16-16_22_10 ,以年月日时分秒为单位的,其他支持的日志格式参数如下:
%A 星期名全称(本地的)
%a 3个字符的星期名(本地的)
%B 月份名的全称(本地的)
%b 3个字符的月份名(本地的)
%c 日期和时间(本地的)
%d 2位数的一个月中的日期数
%H 2位数的小时数(24小时制)
%I 2位数的小时数(12小时制)
%j 3位数的一年中的日期数
%M 2位数的分钟数
%m 2位数的月份数
%p am/pm 12小时制的上下午(本地的)
%S 2位数的秒数
%U 2位数的一年中的星期数(星期天为一周的第一天)
%W 2位数的一年中的星期数(星期一为一周的第一天)
%w 1位数的星期几(星期天为一周的第一天)
%X 时间 (本地的)
%x 日期 (本地的)
%Y 4位数的年份
20M 为日志的大小,即为日志达到多大后生成新的日志文件,支持的单位为K,M,G,本处为20M
+480 为时差,文件的时间为美国时间,中国的时差要比美国多8个小时也就是480分钟,所以要加上480分钟
还有其他的设置方法如下:
每天生成一个错误日志文件
ErrorLog "|/path/to/bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400"
其中86400为轮转的时间单位为秒
Apache自带的rotatelogs实现日志轮转