Nginx 日誌切割

2021-10-09 10:44:49 字數 1392 閱讀 2782

nginx 日誌切割-手動

現有的日誌都會存在 access.log 檔案中,但是隨著時間的推移,這個檔案的內容會越來越多,體積會越來越大,不便於運維人員檢視,所以我們可以通過把這個大的日誌檔案切割為多份不同的小檔案作為日誌,切割規則可以以天為單位,如果每天有幾百g或者幾個t的日誌的話,則可以按需以每半天或者每小時對日誌切割一下。

具體步驟如下:

建立乙個shell可執行檔案:cut_my_log.sh,內容為:

#!/bin/bash

log_path="/var/log/nginx/"

record_time=$(date -d "yesterday" +%y-%m-%d+%h:%m)

pid=/var/run/nginx/nginx.pid

mv $/access.log $/access.$.log

mv $/error.log $/error.$.log

#向nginx主程序傳送訊號,用於重新開啟日誌檔案

kill -usr1 `cat $pid`

為cut_my_log.sh新增可執行的許可權:

chmod +x cut_my_log.sh

測試日誌切割後的結果:

./cut_my_log.sh

nginx 日誌切割-定時

使用定時任務

安裝定時任務:

yum install crontabs

*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh

重啟定時任務:

service crond restart

附:常用定時任務命令:

service crond start //啟動服務

service crond stop //關閉服務

service crond restart //重啟服務

service crond reload //重新載入配置

crontab -e // 編輯任務

crontab -l // 檢視任務列表

定時任務表示式:

cron表示式是,分為5或6個域,每個域代表乙個含義,如下所示:

分 時 日 月 星期幾 年(可選)

取值範圍 0-59 0-23 1-31 1-12 1-7 2019/2020/2021/…

常用表示式:

每分鐘執行:

*/1 * * * *

每日凌晨(每天晚上23:59)執行:

59 23 * * *

每日凌晨1點執行:

0 1 * * *

nginx日誌切割

web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...

nginx 日誌切割

直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...

Nginx日誌切割

編輯指令碼tianshl tianshl nginx vim nginx log division.sh指令碼內容 bin sh 昨天日期 yesterday date v 1d y m d 日誌目錄 log path usr local var log nginx sdk日誌路徑 sdk path...