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