nginx 按天分割日誌

2021-07-11 21:04:05 字數 1285 閱讀 9975

nginx預設的日誌是統一寫到 安裝目錄的log下的 ,訪問日誌是 access.log,錯誤日誌是error.log

而且並沒有提供乙個可配置的地方,對於生產環境,日誌都集中在一塊兒,沒過幾天日誌檔案就可以大到幾個g,只能是使用作業系統的定時任務,自己寫指令碼定時執行,將log日誌進行切割。

#定義日誌的源路徑,即nginx的預設log路徑

source_log_path=/usr/local/nginx/logs

#定義儲存後的路徑位置

dest_log_path=/opt/logs/nginx

#定義log檔案的名稱,以每天為單位,定義日誌的字首為昨天的日期,因為定時任務擬在凌晨零點後執行。

yesterday=$(date -d

"yesterday" +%y%m%d)

#echo $

#rm -rf $/*

#指定移動

mv $/access.log $/nginx_access_$.log

mv $/error.log $/nginx_error_$.log

#移動後,重新向nginx的主程序傳送資訊,令nginx的主程序將日誌重新開啟。否則日誌將會繼續寫到mv後的路徑中

kill -usr1 `ps axu | grep "nginx: master process" | grep -v grep | awk ''`cd$

#進入日誌的路徑,查詢前天前的日誌,然後將其刪掉。

find . -mtime +7 -name "*20[1-9][3-9]*" |xargs rm -rf

exit

0

最後,將該**儲存到乙個sh檔案,並將該檔案加入到系統的定時任務中。

#定時任務的檔案在 /etc/crontab 下,vi此檔案,設定為每天 零點 執行。

0 0 * * * root /bin/sh /opt/sampleenvironment/commands/nginxlogperday.sh

**其實並不複雜。但是在寫的時候還是花費了太多時間,

遇到的問題是:在定義完變數後,比如source_log_path 執行該指令碼,即會報錯 command not found

到最後才發現, 我在定義 source_log_path 的時候 是這樣寫的 :

source_log_path = /usr/local

/nginx/log

在等號兩邊均敲了乙個空格,這樣就導致了上面的錯誤。在定義日期變數的時候,也是如此。

linux下nginx日誌按天分割

nginx的日誌檔案沒有rotate功能。一段時間過後,日誌將越發臃腫,乙個accesslog很快就突破2.5g,因此有必要通過指令碼實現按天切割日誌。1 將日誌檔案備份到 usr local nginx logs historylog目錄下,備份的檔名稱是access yyyymmdd.log和e...

logging日誌按天分割

說我們沒有為這個logger指定handler,它不知道要怎麼處理日誌,要輸出到 去。那我們就給他加乙個handler吧,handler的種類有很多,常用的有4種 logging.streamhandler 控制台輸出 logging.filehandler 檔案輸出 logging.handler...

tomcat日誌按天分割(cronolog)

安裝方式一 shell sudo yum install cronolog 或shell sudo apt get install cronolog 驗證cronolog shell which cronolog 安裝方式二 shell wget shell tar zxf cronolog 1.6...