由于访问日志文件增长速度非常快,日志太大会影响效率。同时,为了方便对日志进行分析计算,需要对日志文件进行定时切割。定时切割的方式有按月切割、按天切割、按小时切割等。最常用的是按天切割。
Nginx不支持像Apache一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割:
mv/data1/logs.log/data1/logs/20090318.log
kill-USR1 Nginx主进程号
首先通过mv命令将日志文件重命名为data1/logs/20090318.log,然后发送Kiss-USRI信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件、data1/logs/access.log。如果nginx.conf配置文件中使用了“pid/usr/local/webserver/nginx/nginx.pid”指令,指定了pid文件的存放路径,我们可以通过cat这个pid文件获得Nginx的主进程号,命令如下:
kill-USRI'cat/usr/local/webserver/nginx/nginx.pid'
如果想每天定时切割日志,还需要借助crontab,我们可以写一个按天切割的日志,按年、按月份目录存放日志的shell脚本:
vi/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
输入一下内容并保持(见代码3-9)

另外,配置crontab每天凌晨00:00定时执行这个脚本:
crontab-e
输入以下内容并保存:
oo oo * * * /bin/bash/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
这个shell脚本和crontab配置主要实现的功能为:假设的日期为2009年5月19日,Nginx当前的日志文件为、data1/logs/access.log,2009年5月20日00:00会执行cut_nginx_log.sh脚本,cut_nginx_log.sh脚本首先创建一个目录、data1/logs/2009/05/,然后将、data1/logs/accsee.log文件移动并重命名为/data1/logs/2009/05/access_20090519.log,再发送kill-USRI信号给Nginx主进程号,告诉Nginx重新生成一个/data1/logs/access.log文件,2009年5月20的日志记录在这个新生成的日志文件中。而/data1/logs/2009/05/access_20090519.log文件,是2009年5月19日的日志文件。