nginx 日誌分日期




大概有兩個方式可以做到。一個用SHELL加上Crontab去弄。

另一個是這邊記錄下來的,使用logrotate

這個設定檔放在 /etc/logrotate.d/  產生對應的日誌檔案會放在/var/log/內

# vi /etc/logrotate.d/nginx

我加入了 dateext   表示 %Y%m%d作為字尾

完成後可以執行測試一下有沒有成功(執行完後到存日誌檔案的地方去看)

# logrotate -f /etc/logrotate.d/nginx

註記一下可使用參數

compress           通過gzip 壓縮轉儲以後的日誌
nocompress           不做gzip壓縮處理
copytruncate          用於還在打開中的日誌檔,把當前日誌備份並截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日誌資料。
nocopytruncate           備份日誌檔,不過不截斷
create mode owner group           輪轉時指定創建新檔的屬性,如create 0777 nobody nobody
nocreate           不建立新的日誌檔
delaycompress           和compress 一起使用時,轉儲的日誌檔到下一次轉儲時才壓縮
nodelaycompress           覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok           如果日誌不存在,不報錯繼續滾動下一個日誌
errors address           轉儲時的錯誤資訊發送到指定的Email 位址
ifempty           即使日誌檔為空檔也做輪轉,這個是logrotate的預設選項。
notifempty           當日誌檔為空時,不進行轉儲
mail address           把轉儲的日誌檔發送到指定的E-mail 地址
nomail           轉儲時不發送日誌檔
olddir directory           轉儲後的日誌檔放入指定的目錄,必須和當前日誌檔在同一個檔案系統
noolddir 轉儲後的日誌檔和當前日誌檔放在同一個目錄下
sharedscripts 運行postrotate腳本,作用是在所有日誌都輪轉後統一執行一次。如果沒有配置這個,那麼每個日誌輪轉後都會執行一次
prerotate 在logrotate轉儲之前需要執行的指令,例如修改檔的屬性等動作;必須獨立成行
postrotate 在logrotate轉儲之後需要執行的指令,例如重新開機 (kill -HUP) 某個服務!必須獨立成行
daily 指定轉儲週期為每天
weekly 指定轉儲週期為每週
monthly 指定轉儲週期為每月
rotate count 指定日誌檔刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
dateext 使用當期日期作為命名格式
dateformat .%s 配合dateext使用,緊跟在下一行出現,定義檔切割後的檔案名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數

size(或minsize) log-size 當日誌檔到達指定的大小時才轉儲
size = 5 (表示5KB)
size = 100k
size = 100M