用到apache自带的rotatelogs小工具
语法如下:
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]
参数解释:
-l :使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。
logfile:它加上基准名就是日志文件名。如果logfile中包含”%”,则它会被视为用于strftime()的格式字符串;否则它会被自动加上以秒为单
位的”.nnnnnnnnnn”后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime :日志文件滚动的以秒为单位的间隔时间。
offset :相对于UTC的时差的分钟数。如果省略,则假定为”0″并使用UTC时间。比如,要指定UTC时差为”-5小时”的地区的当地时间,则此参数
应为”-300″。
filesizeM :指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。
例子:
1、按时间滚动日志文件:
代码如下 | 复制代码 |
错误日志:ErrorLog “|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_error.log 86400 480″ 访问日志:CustomLog “|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_access.log 86400 480″ common |
其中:
/data/apache:为apache的安装目录,根据自己实际情况确定;
86400:秒,24小时,表示生成的日志文件按天滚动,也就是每天生成一个日志文件;
480:分,时间偏移。
同理可以按小时滚动日志文件,每隔一个小时,几个小时。。。生成一个日志文件。
扩展:可以写个脚本定时删除日志文件,只保留几天的日志,如果网站访问量比较大,一天会生成几十上百M甚至更大的日志文件,既占硬盘又影响服务器性能。
2、按大小滚动日志文件:
代码如下 | 复制代码 |
错误日志:ErrorLog “|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_error.log 5M” 访问日志:CustomLog “|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_access.log 5M” common |
当日志文件达到5M时,滚动该日志文件。
在 Windows 下的设置例子如下:
代码如下 | 复制代码 |
# 限制错误日志文件为 1M ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 1M" # 每天生成一个错误日志文件 #ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 86400" # 限制访问日志文件为 1M CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 1M" common # 每天生成一个访问日志文件 #CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 86400" common |
在 Linux 下的设置例子如下:
代码如下 | 复制代码 |
# 限制错误日志文件为 1M ErrorLog "|/server/apache/bin/rotatelogs /server/apache/logs/error-%Y-%m-%d.log 1M" # 每天生成一个错误日志文件 ErrorLog "|/server/apache/bin/rotatelogs /server/apache/logs/error-%Y-%m-%d.log 86400" # 限制访问日志文件为 1M CustomLog "|/server/apache/bin/rotatelogs /server/apache/logs/access-%Y-%m-%d.log 1M" common # 每天生成一个访问日志文件 CustomLog "|/server/apache/bin/rotatelogs /server/apache/logs/access-%Y-%m-%d.log 86400" common |