nginx日誌切割

2021-10-11 18:22:23 字數 1467 閱讀 4931

nginx的日誌一般儲存在logs資料夾下,隨著執行時間加長,日誌檔案越來越大,閱讀和查詢也更加困難

有必要對日誌檔案進行切割 

一般是以天為單位

新增定時任務,在每天23:59點切割前一天的日誌檔案

環境:centos

nginx: /usr/local/nginx

1. 建立乙個shell可執行檔案,名為cut_log.sh (可以儲存在sbin目錄下),內容為

#!/bin/bash

log_path="/usr/local/nginx/logs"

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

pid=/usr/local/nginx/logs/nginx.pid

mv $log_path/access.log $log_path/access.$record_time.log

mv $log_path/error.log $log_path/error.$record_time.log

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

kill -usr1 `cat $pid`

log_path:log檔案位置

pid:nginx.pid檔案位置

2. 為cut_log.sh新增可執行許可權

chmod +x cut_log.sh
3. 先測試切割結果

./usr/local/nginx/sbin/cut_log.sh
進入logs檔案後,可知切割成功

1. 安裝定時任務

yum install crontabs
2. 執行命令

crontab -e
在開啟的文字中新增一條命令

59 23 * * * /usr/local/nginx/sbin/cut_log.sh
前邊是cron表示式,本條的時間是每天的23:59

後邊是sh指令碼的位置

常用的定時任務命令

此時輸入

crontab -l
檢視定時任務

3. 重啟定時任務

service crond restart
完成!

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...