nginx日誌自動分割的完美實現
大家都知道,Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。但是他的日誌系統實在是太欠了,所有的日誌都會輸出到一個檔案中,隨著時間的過去,那個檔案變得越來越大,對我們分析日誌非常不方便。
網上目前出來的方式都是在 linux下寫指令碼來分割日誌,但是這種方式很不方便,尤其是對linux環境不熟悉的同學,寫這個很費勁,而且系統重啟之類的,這個指令碼要重新啟動,等等,總之很煩。
但是今天,我給大家帶來了完美的解決方案,那就是修改nginx原始碼,讓他支援日誌分割。
可能有的朋友看到這會說這個更麻煩,確實修改原始碼不是一件容易的事。不願意看如何修改的朋友,這裡直接給出修改後的連結,下載就能用了
上面的1.4.1版只支援新建檔案,1.5.9支援新建檔案和資料夾(推薦下載)
日誌配置方式請參考src資料夾中的nginx.conf來配置
1.4.1 配置檔案中新增了 date_udf (格式:yyyy-MM-dd) 變數
1.5.9 配置檔案中新增了 date_udf (格式:yyyy-MM-dd), year_udf (格式:yyyy), month_udf (格式:MM), day_udf (格式:dd)。
# access_log logs/$year_udf/$month_udf/$day_udf/$date_udf-access.log main; //別忘了把配置檔案中的 main 放開
上面的方式配置 到時候日誌會在 logs/yyyy/MM/dd/yyyy-MM-dd-access.log 檔案中。
特別提示:請給你指定的logs資料夾指定nginx使用者的寫許可權(所謂的nginx使用者是指 nginx 配置檔案中指定的那個使用者)
特別提示:1.5.9版裡面,要是配置日期資料夾,請在配置檔案中將使用者指定為啟動nginx的那個使用者,不然創建出來的資料夾當前使用者沒有寫許可權,會導致日誌生成失敗。
好累啊,今天就先到這裡,如何修改的以後再更新吧