Nginx:Nginx日志切割方法


Nginx的日志文件是沒有切割(rotate)功能的,但是我們可以寫一個腳本來自動切割日志文件。

首先我們要注意兩點:

1.切割的日志文件是不重名的,所以需要我們自定義名稱,一般就是時間日期做文件名。

2.既然是自動切割日志文件,那當然需要定時任務來進行操作,但是這里還涉及一個問題,Nginx的日志是存儲在一個文件的,我們要切割就要保證日志數據的完整性,確保得到想要日期的日志信息,這里有一個方法:向Nginx主進程發送USR1信號 ,以重新開啟日志的方式記錄所需的日志信息。

 

接下來就是創建腳本:

在Nginx的安裝目錄下創建nginx_log.sh腳本

# /opt/nginx/ 這是我的nginx安裝目錄,大家替換成自己的目錄
vi /opt/nginx/nginx_log.sh

編寫腳本如下:

#!/bin/bash

#設置切割的日志文件存放目錄
LOG_HOME="/opt/nginx/logs/"

#設置切割的日志名稱(這里用日期時間的命名方式)
LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".accesss.log

#開始切割日志文件
mv ${LOG_HOME}/access.log ${LOG_HOME}/${LOG_PATH_BAK}.log

#向nginx主進程發送信號 重新打開記錄日志
kill -USR1 `cat /opt/nginx/logs/nginx.pid`

 

腳本寫完了,開始創建定時任務,這里用Linux自帶的定時任務管理 crontab 命令

#創建系統定時任務
crontab -e

 

如下進行編輯:

#一分鍾執行一次
*/1 * * * * sh /opt/nginx/nginx_log.sh

這里的Cron表達式設置的是一分鍾執行一次,可以根據需要更改。

 

重啟定時任務

service crond restart

 

接下來就可以等待一分鍾看看是否生成日志信息:

 

至此完成!


免責聲明!

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



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