寫在前面
Nginx是沒有以日期格式作為文件名來存儲的,也就是說,Nginx不像Tomcat,每天自動生成一個日志文件,所有的日志都是以一個名字來存儲,時間久了日志文件會變得很大。這樣非常不利於分析。雖然nginx沒有這個功能但我們可以寫一個小腳本配合計划任務來達到這樣的效果。即讓Nginx每天產生一個日志文件,方便我們進行后續的數據分析。
分割Nginx日志
首先,我們要創建一個腳本文件,用來分割Nginx日志,具體腳本如下:
vim /usr/local/nginx-1.19.1/cutnginxlog.sh
腳本內容如下:
#!/bin/sh
# Program:
# Auto cut nginx log script.
# nginx日志路徑
LOGS_PATH=/usr/local/nginx-1.19.1/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主進程發送重新打開日志文件的信號
kill -USR1 $(cat /usr/local/nginx-1.19.1/logs/nginx.pid)
接下來就是給cutnginxlog.sh文件授權。
chmod a+x cutnginxlog.sh
接下來添加計划任務,定時執行cutnginxlog.sh腳本,以root用戶執行如下命令:
echo '59 23 * * * root /usr/local/nginx-1.19.1/cutnginxlog.sh >> /usr/local/nginx-1.19.1/cutnginxlog.log 2>&1' >> /etc/crontab
意思就是在每天的23點59分執行腳本。將自動任務的執行日志(錯誤和正確的日志)自動寫入cutnginxlog.log,“命令 >> 2>&1” 表示以追加方式將正確輸出和錯誤輸出都保存到同一個文件中。
好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉發,讓更多的人看到,一起學習,一起進步!!
寫在最后
如果你覺得冰河寫的還不錯,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習高並發、分布式、微服務、大數據、互聯網和雲原生技術,「 冰河技術 」微信公眾號更新了大量技術專題,每一篇技術文章干貨滿滿!不少讀者已經通過閱讀「 冰河技術 」微信公眾號文章,吊打面試官,成功跳槽到大廠;也有不少讀者實現了技術上的飛躍,成為公司的技術骨干!如果你也想像他們一樣提升自己的能力,實現技術能力的飛躍,進大廠,升職加薪,那就關注「 冰河技術 」微信公眾號吧,每天更新超硬核技術干貨,讓你對如何提升技術能力不再迷茫!