由於nginx的日志本身只是支持按照server_name或者大小進行划分,對於習慣了apache的按照一個網站每天一個日志的我來說是不可以接受的,所以就實現了按天切割的功能,這篇文章主要介紹了關於Nginx日志按日期切割的相關資料,需要的朋友可以參考下。
實現需求
本文實現的功能是在嗎每天凌晨00:00把前一天的Nginx日志access.log重命名為access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面話不多說了,來看看詳細的實現方法吧。
實現方法
腳本
1
|
vim
|
#!/bin/bash
set -u
#開始時間2020-06-22
#order by : wanghz
#此腳本用於自動分割Nginx的日志,包括access.log和error.log
#每天00:00執行此腳本 將前一天的access.log重命名為access-xxxx-xx-xx.log格式,並重新打開日志文件
#Nginx日志文件所在目錄
logPath=/usr/local/nginx/logs/
#獲取昨天的日期
yesterDay=$(date -d "yesterday" +%Y-%m-%d)
##獲取pid文件路徑
PID=/usr/local/nginx/logs/nginx.pid
#分割日志
mv ${logPath}access.log ${logPath}access-${yesterDay}.log
mv ${logPath}error.log ${logPath}error-${yesterDay}.log
#向Nginx主進程發送USR1信號,重新打開日志文件
kill -USR1 `cat ${PID}`
1
|
chmod 755
/usr/local/nginx/logs/cut_nginx_log
.sh
|
定時任務
配置crontab每天凌晨00:00定時執行這個腳本
1
2
3
|
/etc/crontab
# 輸入以下內容並保存
01 00 * * *
/usr/local/nginx/logs/cut_nginx_log
.sh
|