nginx日誌切割

當網站訪問量大後,日誌數據就會不少,若是所有寫到一個日誌文件中去,文件會變得愈來愈大。文件大速度就會慢下來,好比一個文件幾百兆。寫入日誌的時候,會影響操做速度。另外,若是我想看看訪問日誌,一個幾百兆的文件,下載下來打開也很慢。nginx

爲了方便對日誌進行分析計算,須要對日誌進行定時切割。定時切割的方式有按照月切割、按天切割,按小時切割等。最經常使用的是按天切割。web

配置shell腳本

#!/bin/bash
# 必須天天00:00運行shell

#日誌保留天數
DAY=7bash

LOGS_PATH="/usr/local/webserver/nginx/logs" #nginx日誌存放目錄網站

mkdir -p ${LOGS_PATH}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")  #創建以日期的日誌文件夾
mv -f ${LOGS_PATH}/access.log ${LOGS_PATH}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log    #備份access.log到以日期的日誌文件夾中
mv -f ${LOGS_PATH}/error.log ${LOGS_PATH}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").log    #備份error.log到以日期的日誌文件夾中spa

/etc/init.d/nginx reload   #重載告訴nginx從新打開日誌。
for ACCESS_LOG in `find ${LOGS_PATH}/ -type f -name "access_[0-9]*.log" -mtime +${DAY}`;do   
rm -f ${ACCESS_LOG}
done        #刪除7天之前的日誌。
for ERROR_LOG in `find ${LOGS_PATH}/ -type f -name "error_[0-9]*.log" -mtime +${DAY}`;do
rm -f ${ERROR_LOG}
done    日誌

######## -mtime   -n +n                #按文件更改時間來查找文件,-n指n天之內,+n指n天之前server

 

寫入到計劃任務中:ip

00 00 * * * /bin/sh /usr/local/webserver/nginx/script/cut_nginx_log.shit

相關文章
相關標籤/搜索