Nginx是沒有以日期格式作為文件名來存儲的,也就是說,Nginx不像Tomcat,每天自動生成一個日期文件,所有的日志都是以一個名字來存儲,時間久了日志文件會變得很大。這樣非常不利于分析。雖然nginx沒有這個功能但我們可以寫一個小腳本配合計劃任務(wù)來達(dá)到這樣的效果。即讓Nginx每天產(chǎn)生一個日志文件,方便我們進行后續(xù)的數(shù)據(jù)分析。
首先,我們要創(chuàng)建一個腳本文件,用來分割Nginx日志,具體腳本如下:
vim /usr/local/nginx-1.9.3/cutnginxlog.sh
腳本內(nèi)容如下:
#!/bin/sh
# Program:
# Auto cut nginx log script.
# nginx日志路徑
LOGS_PATH=/usr/local/nginx-1.9.3/logs
TODAY=$(date -d 'today' +%Y-%m-%d)
# 移動日志并改名
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log
# 向nginx主進程發(fā)送重新打開日志文件的信號
kill -USR1 $(cat /usr/local/nginx-1.9.3/logs/nginx.pid)
接下來就是給cutnginxlog.sh文件授權(quán)
chmod a+x cutnginxlog.sh
接下來就是添加計劃任務(wù)讓他定時運行了,以root用戶執(zhí)行如下命令:
echo '59 23 * * * root /usr/local/nginx-1.9.3/cutnginxlog.sh >> /usr/local/nginx-1.9.3/cutnginxlog.log 2>&1' >> /etc/crontab
意思就是在每天的23點59分執(zhí)行腳本。將自動任務(wù)的執(zhí)行日志(錯誤和正確的日志)自動寫入cutnginxlog.log,“命令 >> 2>&1” 表示以追加方式將正確輸出和錯誤輸出都保存到同一個文件中。