利用系統內建的logrotate切割nginx日誌 摘要: 這個東東可以切割任何日誌,不僅僅是NGINX的log,很好用哦。 logrotate簡介 logrotate 程式是一個記錄檔管理工具。用來把舊的記錄檔刪除,並建立新的記錄檔,我們把它叫做“轉儲”。我們可以根據記錄檔的大小,也可以根據其天數來轉 儲,這個過 程一般通過 cron 程式來執行。logrotate 程式還可以用於壓縮記錄檔,以及發送日誌到指定的E-mail 。系統內建的日誌切割的設定檔在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 裡面,觀察一下。 作用: 如果記錄檔比較大,MV是需要時間的,這段時間內的日誌有可能丟失。logrotate可以在切割日誌的同時,不遺失資料。 vi /etc/logrotate.d/nginx /usr/local/nginx/logs/*.log { daily rotate 7 missingok notifempty dateext sharedscripts postrotate if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript } 指令碼解釋: /usr/local/nginx/logs/*.log { nginx的日誌路徑 /usr/local/nginx/logs/www.qq.com.log error.log { 可以指定日誌,用空格分開 daily 每天輪詢 rotate 7 保留7天 missingok 如果日誌丟失,不報錯繼續滾動下一個日誌 notifempty 當日誌為空白時不進行滾動 dateext 在檔案末尾添加當前日期 sharedscripts 運行postrotate指令碼 postrotate 指令碼內容,給NGINX發訊號要求重建日誌,如果nginx沒開起來就不操作 if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript } 測試,有產生就代表配置成功 /usr/sbin/logrotate -f /etc/logrotate.d/nginx 配置crontab 00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx 也可以放入/etc/cron.daily/ 一定要注意:1、在測試切割是否成功,一定要先備份一下!如果想保留全部日誌,設定一個很大的值比如3650,如果你 注釋rotate或者不加,那麼不會切割成功。 2、crond運行 附 logrotate 的設定檔是 /etc/logrotate.conf。主要參數如下表: compress 通過gzip 壓縮轉儲以後的日誌 nocompress 不需要壓縮時,用這個參數 copytruncate 用於還在開啟中的記錄檔,把當前記錄備份並截斷 nocopytruncate 備份記錄檔但是不截斷 create mode owner group 轉儲檔案,使用指定的檔案模式建立新的記錄檔 nocreate 不建立新的記錄檔 delaycompress 和 compress 一起使用時,轉儲的記錄檔到下一次轉儲時才壓縮 nodelaycompress 覆蓋 delaycompress 選項,轉儲同時壓縮。 errors address 專儲時的錯誤資訊發送到指定的Email 地址 ifempty 即使是空檔案也轉儲,這個是 logrotate 的預設選項。 notifempty 如果是空檔案的話,不轉儲 mail address 把轉儲的記錄檔發送到指定的E-mail 地址 nomail 轉儲時不發送記錄檔 olddir directory 轉儲後的記錄檔放入指定的目錄,必須和當前記錄檔在同一個檔案系統 noolddir 轉儲後的記錄檔和當前記錄檔放在同一個目錄下 prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 daily 指定轉儲周期為每天 weekly 指定轉儲周期為每周 monthly 指定轉儲周期為每月 rotate count 指定記錄檔刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份 tabootext [+] list 讓logrotate 不轉儲指定副檔名的檔案,預設的副檔名是:.rpm-orig, .rpmsave, v, 和 ~ size size 當記錄檔到達指定的大小時才轉儲,Size 可以指定 bytes (預設)以及KB (sizek)或者MB (sizem).