Nginx日志按日期切割詳解


由於nginx的日志本身只是支持按照server_name或者大小進行划分,對於習慣了apache的按照一個網站每天一個日志的我來說是不可以接受的,所以就實現了按天切割的功能,這篇文章主要介紹了關於Nginx日志按日期切割的相關資料,需要的朋友可以參考下。

實現需求

本文實現的功能是在嗎每天凌晨00:00把前一天的Nginx日志access.log重命名為access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面話不多說了,來看看詳細的實現方法吧。

實現方法

腳本

vim /www/server/nginx/sbin/cut_nginx_log.sh

#!/bin/bash
#此腳本用於自動分割Nginx的日志,包括access.log和error.log
#每天00:00執行此腳本 將前一天的access.log重命名為access-xxxx-xx-xx.log格式,並重新打開日志文件
#Nginx日志文件所在目錄
LOG_PATH=/www/server/nginx/logs/
#獲取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
MONTH=$(date -d "yesterday" +%Y-%m)
if [ ! -d "${LOG_PATH}access_logs" ]; then
mkdir "${LOG_PATH}access_logs"
fi
if [ ! -d "${LOG_PATH}error_logs" ]; then
mkdir "${LOG_PATH}error_logs"
fi

if [ ! -d "${LOG_PATH}access_logs/${MONTH}" ]; then
mkdir "${LOG_PATH}access_logs/${MONTH}"
fi
if [ ! -d "${LOG_PATH}error_logs/${MONTH}" ]; then
mkdir "${LOG_PATH}error_logs/${MONTH}"
fi
#獲取pid文件路徑
PID=/www/server/nginx/logs/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${LOG_PATH}access_logs/${MONTH}/${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error_logs/${MONTH}/${YESTERDAY}.log
#向Nginx主進程發送USR1信號,重新打開日志文件
kill -USR1 `cat ${PID}`

賦予可執行權限:

chmod +x /www/server/nginx/sbin/cut_nginx_log.sh

定時任務

配置crontab每天凌晨00:00定時執行這個腳本

crontab -e
# 輸入以下內容並保存
00 00 * * * /bin/bash /www/server/nginx/sbin/cut_nginx_log.sh

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM