利用系統自帶的logrotate切割nginx日誌

利用系統自帶的logrotate切割nginx日誌node

 
摘要: 這個東東能夠切割任何日誌,不單單是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/ 
 
必定要注意:一、在測試切割是否成功,必定要先備份一下!若是想保留所有日誌,設置一個很大的值好比3650,若是你                            註釋rotate或者不加,那麼不會切割成功。 
                   二、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). 
相關文章
相關標籤/搜索