Nginx日誌按日期分割

2021-09-24 05:10:20 字數 1027 閱讀 7936

原創:

nginx是沒有以日期格式作為檔名來儲存的,也就是說,nginx不像tomcat,每天自動生成乙個日期檔案,所有的日誌都是以乙個名字來儲存,時間久了日誌檔案會變得很大。這樣非常不利於分析。雖然nginx沒有這個功能但我們可以寫乙個小指令碼配合計畫任務來達到這樣的效果。即讓nginx每天產生乙個日誌檔案,方便我們進行後續的資料分析。

首先,我們要建立乙個指令碼檔案,用來分割nginx日誌,具體指令碼如下:

vim /usr/local/nginx-1.9.3/cutnginxlog.sh

指令碼內容如下:

#!/bin/sh

# program:

#     auto cut nginx log script.

# nginx日誌路徑 

logs_path=/usr/local/nginx-1.9.3/logs

today=$(date -d 'today' +%y-%m-%d)

# 移動日誌並改名

mv $/error.log $/error_$.log

mv $/access.log $/access_$.log

# 向nginx主程序傳送重新開啟日誌檔案的訊號

kill -usr1 $(cat /usr/local/nginx-1.9.3/logs/nginx.pid)

接下來就是給cutnginxlog.s**件授權

chmod a+x cutnginxlog.sh

接下來就是新增計畫任務讓他定時執行了,以root使用者執行如下命令:

echo '59 23 * * * root /usr/local/nginx-1.9.3/cutnginxlog.sh >> /usr/local/nginx-1.9.3/cutnginxlog.log 2>&1' >> /etc/crontab

意思就是在每天的23點59分執行指令碼。將自動任務的執行日誌(錯誤和正確的日誌)自動寫入cutnginxlog.log,「命令 >> 2>&1」 表示以追加方式將正確輸出和錯誤輸出都儲存到同乙個檔案中。

nginx日誌按日期分割

bin bash 零點執行該指令碼 nginx日誌檔案所在的目錄 logs path 日誌資料夾路徑 獲取昨天的yyyy mm dd yesterday date d yesterday y m d 移動檔案 mv access.log access log 向nginx主程序傳送usr1訊號,us...

nginx 按天分割日誌

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

linux下nginx日誌按天分割

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