在windows下安裝nginx後,由於nginx本身沒有提供日誌分割的功能配置,所以只能通過windows的計劃任務來實現該功能,並需要配合寫一個簡單的分割用的批處理命令來用。
假設我的nginx安裝在D:\nginx目錄下,而相關應用的日誌被配置爲3個日誌,分別爲:
- xxxxx.com.log 正常的應用訪問日誌
- xxxxx.com_444.log 非法訪問日誌,在nginx中,444爲特有的拒絕連接狀態,所以設爲444別名
- xxxxx.com_res.log 靜態資源訪問日誌
現在需要每天將日誌分割到單獨的目錄下,並按年月日目錄區分:
先寫批准處理的bat腳本如下:
for /f "tokens=1 delims=/ " %%j in ("%date%") do set d1=%%j for /f "tokens=2 delims=/ " %%j in ("%date%") do set d2=%%j for /f "tokens=3 delims=/ " %%j in ("%date%") do set d3=%%j set backupdir=d:\backup\%d1%\%d2%\%d3% mkdir %backupdir% move d:\ngins\logs\xxxxx.com*log %backupdir% d:\ngins\nginx -s reload
上面的命令先將date按/符號分割爲年月日的3個字符串,並在D盤的backup目錄下創建年\月\日的目錄,然後將對應應用的所有匹配的訪問日誌都移動到新創建的目錄下,最後重新載入nginx配置(相當於重啓)。
注意:上面對%date%的分割,未必一定是/符號,我在不同的windows系統上見過不同的分隔符,有的表示爲如2014/05/04,有的則表示爲2014-05-04的格式,所以要視實際情況來使用對應的分隔符。
批處理寫完後,可以先嚐試執行下看看效果,建議以上所有路徑都使用絕對路徑,避免分配到計劃任務的時候執行失敗。
下面就是添加到系統的計劃任務裏面,這個就比較簡單:
開始 - > 程序 -> 附件 -> 系統工具 -> 任務計劃程序,添加任務,然後根據提示一步步完成操作就可以了,添加完成後可以右擊任務運行看看效果,確定沒有問題後,就可以等第二天看結果了。