標簽:
服務器由于訪問日志文件增長速度很快,日志太大會影響服務器效率。為了方便對日志進行分析計算,須要對日志文件進行定時切割。定時切割的方式分為按月切割、按天切割、按小時切割等。最常用的是按天切割。Nginx不支持像—樣使用日志,但是可以采用以下方式來實現(xiàn)日志文件的切割:
mv/datal/logs/access.Iog/datal/logs/20090318.Iogkill-USRlNginxii4^^
首先通過mv命令將日志文件重命名為/4細1爪職/20090318.1(^,然后發(fā)送kill-USRl信號給Nginx的主進程號,讓Nginx重新生成一個新的日志文件/datalAogWaccess.log。如果nginx.conf配置文件中使用了“pid/usr^ocaVwebserver/nginj^nginx.pid;”指令,指定了口丨(1文件的存放路徑,我們可以通過cat這個pid文件獲得Nginx的主進程號,命令如下:
kill-USRl’cat/usr/local/webserver/nginx/nginx.pid’
如果想每天定時切割日志,還須要借助宿遷波仔可以寫一個按天切割的日志,按年、月份目錄存放日志的shell腳本:
vi/usr/local/webserver/nginx/sbin/cut_jiginx_logsh輸入以下內(nèi)容并保存(見代碼3-9):
代碼3-9
#!/bin/bash
#這個腳本須在每天的00:00運行
#Nginx日志文件的存放路徑logs__path=_/datal/logs/”
mkdir-p${logs_path}$(date-d”yesterday”+”%Y”)/$(date-d”yesterday”+”%m”)/mv${logs_path)access.Iog${logs_path)$(date-d”yesterday”+”%Y”)/$(date-d”yesterday”+”%m1*)/access_$(date-d”yesterday”+*%Y%m%d”).Iogkill-USRl’cat/usr/local/webserver/nginx/nginx.pid’
另外,配置訂0故31)每天凌晨00:00定時執(zhí)行這個腳本:crontab-e輸入以下內(nèi)容并保存:
0000***/bin/bash/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
這個81^11腳本和以0加31)配置主要實現(xiàn)的功能為:假設今天的日期為2009年5月19S,Nginx當前的日志文件為/datal/logs/access.log,2009年5月20日00:00會執(zhí)行cut_nginx_log.sh腳本,cut_nginx_log.sh腳本首先創(chuàng)建一個目錄/63131乃(^/2009/05/,然后將/dataldogs/access.log文件移動并重命名為化3131/1088/2009/05/3^88_20090519.1(^,再發(fā)送kill-USRl信號給Nginx主進程號,告訴Nginx重新生成一個/datal/logs/access.log文件,2009年5月20日的日志記錄在這個新生成的日志文件中。而化3131瓜^/2009/05/3^88_20090519.108文件,就是2009年5月19日的日志文件。
|