【Linux】nginx按日生成日志


寫在開始:感謝

https://blog.csdn.net/andypan1314/article/details/74576180

和https://blog.csdn.net/weixin_38111957/article/details/81154333

給與的靈感和教程,感謝。

 

(前置:必須要找到你nginx服務器的pid和access.log、error.log位置)

1、目的:實現nginx按日生成access.log和error.log日志文件

2、場景:這個日志隨着時間的增長,訪問量越來越大的情況下,文件會越來越大。對於日志分析很會痛苦,這個時候寫一個定時任務,這樣豈不是完美。

3、實現思路:shell腳本+定時任務+nginx信號控制,完成日志定時切割

4、在你需要保存日志或者是其他目錄,新建一個shell腳本。一般shell腳本都是.sh來標識:

1、創建一個文件,然后使用vim編輯該文件,編輯內容如下:

touch /www/w***ux/nginx/logs/nginxsavelog_byday.sh
chmod -R 755 /www/w***ux/nginx/logs/nginxsavelog_byday.sh

2、設置定時任務 輸入命令"crontab -e"來設置linux定時任務 ,寫入設置如下:

* 0 * * * /bin/sh /www/w***ux/nginx/logs/nginxsavelog_byday.sh,前面時間可以隨意更改

3、shell腳本如下:(此腳本已分別切割access.log和error.log兩個日志文件)

#!/bin/bash 

#安裝目錄下日志文件
base_path='/www/w***ux/nginx/logs/access.log'
base_path2='/www/w***ux/nginx/logs/error.log'
 
#需要保存的目錄位置
log_path='/www/w****ux/nginx/logs/nginx_logs_byday'
 
#獲取月份
log_month=$(date -d yesterday +"%Y%m")
 
#獲取當天日期
log_day=$(date -d yesterday +"%d")
 
#在指定位置創建文件夾
mkdir -p $log_path/$log_month
 
#將安裝目錄下的日志文件,移動到指定存儲位置
mv $base_path $log_path/$log_month/access_$log_day.log
mv $base_path2 $log_path/$log_month/error_$log_day.log
 
#再使用信號控制切割日志
kill -USR1 `cat /www/w***ux/nginx/logs/nginx.pid`

4、測試一遍:執行腳本

$ /bin/sh nginxsavelog_byday.sh

在/www/w****ux/nginx/logs/ 下面生成【nginx_logs_byday/201811/】目錄,如下:

 

5、測試完畢,將腳本執行命令放入定時器:(使用vim和i命令追加)

$ cd /var/spool/cron
$ vi root
# i 追加sh命令
5 0 * * * /www/w****ux/nginx/logs/nginxsavelog_byday.sh

6、結束,次日查看生成日志文件。

 



 


免責聲明!

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



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