Nginx 日誌切割

2021-10-22 01:43:01 字數 1548 閱讀 4079

nginx日誌切割

[root@web01 logs]# ll 總用量 28

-rw-r–r-- 1 root root 8505 2月 27 21:14 access.log2021-02-27–22:28:31

-rw-r–r-- 1 root root 10532 2月 27 22:07 error.log

-rw-r–r-- 1 root root 6 2月 27 22:07 nginx.pid

1.檢視當前nginx日誌

[root@web01 logs]# cd /learn_nginx/nginx/logs/

[root@web01 logs]# ll

總用量 28

-rw-r–r-- 1 root root 8505 2月 27 21:14 access.log

-rw-r–r-- 1 root root 10532 2月 27 22:07 error.log

-rw-r–r-- 1 root root 6 2月 27 22:07 nginx.pid

2.給檔案重新命名,注意用mv而不是cp(涉及檔案inode知識)

[root@web01 logs]# mv access.log access.log$(date +"%y-%m-%d–%h:%m:%s")

3.傳送usr1訊號給nginx-master,重新開啟日誌記錄,生成新的日誌檔案

[root@web01 logs]# nginx -s reopen

4.注意,在以上的nginx重新命名日誌切割,不要著急立即對檔案修改,且要sleep 等待1秒

由於nginx的工作模式,master下發指令給worker只是做了標記,當業務量大的時候,這個修改操作可能會慢一點,不會理解生效

5.在生產環境下,主要以crontab形式,執行cut_nginx_log.sh指令碼

[root@web01 sbin]# vim cut_nginx_log.sh !#/bin/bash

logs_path="/learn_nginx/nginx/logs"

mkdir -p $$(date -d 「yesterday」 +"%y")/$(date -d 「yesterday」 +"%m")

mv $access.log $$(date -d 「yesterday」 +"%y")/$(date -d 「yesterday」 +"%m")/access_$(date -d 「yesterday」 +"%y-%m-%d").log

kill -usr1 `cat /learn_nginx/nginx/logs/nginx.pid`

6.每個小時切割一次日誌

[root@web01 sbin]# crontab -e 0 0 * * * /bin/bash /learn_nginx/nginx/sbin/cut_nginx_log.sh

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