nginx日誌切割

2021-10-05 05:17:32 字數 1968 閱讀 5457

cat /etc/logrotate.d/nginx

/usr/local/nginx/logs/*.log

建立定時任務:

echo

"59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx"

>> /var/spool/cron/root

引數釋義:

/usr/local/nginx/logs/*.log 需要輪詢日誌路徑

daily: 日誌檔案分割頻度。可選值為 daily,monthly,weekly,yearly

rotate 7: 一次將儲存7個歸檔日誌。對於第8個歸檔,時間最久的歸檔將被刪除。

missingok: 在日誌輪循期間,任何錯誤將被忽略,例如「檔案無法找到」之類的錯誤。

dateext: 使用日期作為命名格式

compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。

nocompress: 如果你不希望對日誌檔案進行壓縮,設定這個引數即可

delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循週期進行。這在你或任何軟體仍然需要讀取最新歸檔時很有用。

copytruncate:先把日誌內容複製到舊日誌檔案後才清除日誌檔案內容,可以保證日誌記錄的連續性;nocopytruncate備份日誌檔案但是不截斷

notifempty: 如果日誌檔案為空,輪循不會進行;ifempty:即使是空檔案也轉儲,

sharedscripts: 表示postrotate指令碼在壓縮了日誌之後只執行一次

create 644 www root: 以指定的許可權建立全新的日誌檔案,同時logrotate也會重新命名原始日誌檔案。

postrotate/endscript: 最通常的作用是讓應用重啟,以便切換到新的日誌檔案, 在所有其它指令完成後,postrotate和endscript裡面指定的命令將被執行。在這種情況下,rsyslogd 程序將立即再次讀取其配置並繼續執行。

prerotate/endscript:在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

kill -usr1 `cat /var/run/nginx.pid不是中止nginx的程序,而是傳遞給它訊號重新生成日誌,如果nginx沒啟動不做操作

/usr/sbin/logrotate -d /etc/logrotate.d/nginx   用於測試

cat /var/lib/logrotate/logrotate.status 檢視log檔案的具體執**況

cat /root/nginx_log_cut.sh

#!/bin/bash

#:description: rotate nginx access logs

ngx_pid=

`cat /usr/local/nginx/logs/nginx.pid`

logs_dir=

"/usr/local/nginx/logs"

cd$logs_dir

/usr/bin/mv access.log $(

date +%f -d 'yesterday'

)_access.log

/usr/bin/mv error.log $(

date +%f -d 'yesterday'

)_error.log

/bin/kill -usr1 $ngx_pid

#不是中止nginx的程序,而是傳遞給它訊號重新生成日誌

建立定時任務:

echo

"00 00 * * * /root/nginx_log_cut.sh"

>> /var/spool/cron/root

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