nginx日誌切割詳解

2021-09-29 04:57:10 字數 1531 閱讀 2245

日誌的關鍵性就不用多說了,對於**的日誌來說,如果**訪問量較大,每天產生的日誌也是非常龐大的,nginx預設都是將日誌寫入到指定的日誌檔案中,如果日誌檔案變得非常大,那麼自然的寫入日誌就較慢,如果我們需要分析日誌,對於幾百兆或者幾g的檔案,分析起來也很不方便,這裡我採用的是系統自帶日誌輪詢logrotate 對nginx 日誌進行割切。

logrotate配置

logrotate 的主配置檔案在/etc/logrotate.conf 主配置檔案無需進行調整配置,保持預設即可。

如果使用了一鍵安裝包配置的環境,可能在/etc/logrotate.d 下已經生成了檔案nginx ,如果沒有,則建立該檔案:

vim /etc/logrotate.d/nginx 

/data/weblogs/*.log

配置選項說明:

/data/weblogs/*.log # 需要切割的日誌檔案,可以指定為某個檔名進行切割

weekly #指定轉儲週期為每週,對應的 daily:指定轉儲週期為每天,monthly:指定轉儲週期為每月

rotate 7 #指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,7 指保留7 個備份

missingok #如果指定的目錄不存在,logrotate會報錯,此項用來關閉報錯

nocompress # 這裡是不進行壓縮,如果需要將切割的日誌進行壓縮,可以設定為compress

notifempty #如果是空檔案的話,不轉儲

sharedscripts #所有的日誌檔案都輪轉完畢後統一執行一次指令碼

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

postrotate 中的內容即為:nginx程序傳送usr1訊號使其重新開啟日誌並寫入,不會重啟服務,也不會導致最新寫入的日誌丟失

如果日誌分類存放到不同的目錄下可以這樣設定:

/data/weblogs/*.log 

/data/weblogs/cnyunwei/*.log

{weekly

rotate 7

.....

測試是否正確執行

[root@aliyun weblogs]#/usr/sbin/logrotate -f /etc/logrotate.d/nginx
執行上述命令後可以檢視當前日誌檔案下生成了www.susecui.cn.log-20160808 的檔案,如果是開啟了壓縮,則會生成www.susecui.cn.log-20160808.gz 的壓縮檔案

建立任務計畫執行命令

如果是設定了每天進行切割日誌,那麼就需要單獨設定計畫任務,預設設定為一周切割的情況下不需要設定計畫任務,logrotate 主配置檔案中已經定義了每週會進行輪詢。

crontab -e

10 2 * * 6 /usr/sbin/logrotate -f /etc/logrotate.d/nginx

乾貨:《linux就該這麼學》

nginx日誌詳解和日誌切割

我們觀察nginx的server段,可以看到如下類似資訊 access log logs host.access.log main 這說明 該server,它的訪問日誌的檔案是 logs host.access.log 使用的 格式 main 格式.除了main格式,你可以自定義其他格式.main格...

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