nginx日誌切割總結

2022-06-02 15:18:18 字數 1441 閱讀 4229

方法1(指令碼+定時執行):

#step1:加指令碼 cut_nginx_log.sh,主程序把usr1訊號發給worker,worker接到這個訊號後,會重新開啟日誌檔案

#!/bin/bash

logs_path="/usr/local/nginx-1.6.0/logs"

log_name="access.log"

pid_path="/usr/local/nginx-1.6.0/logs/nginx.pid"

mv $/$ $/"access-"$(date --date="last day" "+%y-%m-%d").log

kill -usr1 `cat $`

#find $ -name "*.log" -mtime +30 -delete

#step2:crontab 定時跑指令碼,每天0點0分執行指令碼

crontab -e

0 0 * * * /usr/local/nginx-1.6.0/logs/cut_nginx_log.sh

方法2(使用logrotate):

vi /etc/logrotate.d/nginx

/usr/local/nginx/logs/www.willko.cn.log /usr/local/nginx/logs/nginx_error.log 裡加上:

if ($time_iso8601 ~ "^(\d)-(\d)-(\d)t(\d):(\d):(\d)")

set $ng_year $1;

set $ng_month $2;

set $ng_day $3;

set $ng_hour $4;

set $ng_minutes $5;

set $ng_seconds $6;

access_log  logs/$ng_year-$ng_month-$ng_day-$ng_hour-host.access.log;

*注意這個要有pcre庫,不然if處會報錯

q&a:

1、nginx日誌實現自動分割了嗎?

實際上沒有,但是用apt/yum安裝nginx時會自動配置logrotate。

logrotate作為乙個/etc/cron.daily/logrotate任務每日定時執行。

你往/etc/logrotate.d/下新增配置檔案logrotate執行時會自動根據配置檔案進行日誌歸檔。

如apt-get安裝的nginx官方源的日誌歸檔配置檔案為 /etc/logrotate.d/nginx。

參考:

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