logrotate日誌管家來切割日誌(tomcat,nginx,httpd的日誌)

tomcatslog文件,原本應該放在/etc/logrotate.d/下的。其實無所謂了 node

/usr/local/tomcat1/logs/catalina.out
/usr/local/tomcat2/logs/catalina.out
/usr/local/tomcat3/logs/catalina.out
/usr/local/tomcat4/logs/catalina.out
/usr/local/tomcat5/logs/catalina.out
{
    rotate 30
    daily
    dateext
    copytruncate
    #notifempty
    missingok
}

這個是系統自帶的httpd的日誌切割: nginx


/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}



一樣nginx 也能夠用/usr/local/nginx/sbin/nginx -s reload,可是 nginx提供了USR1消息,來從新生成日誌。因此使用 kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 也是同樣的。

而後能夠利用crond定時任務來執行,
50 23 * * * /usr/sbin/logrotate -f /root/tomcatslog
這樣就OK了。
shell

Nginx日誌切片的核心是:
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
centos

這個會從新生成日誌,其實咱們只要在這以前把原來的日誌文件mv到其它地方或都用logrotate進行管理均可以。
tomcat

/usr/local/nginx/logs/*.log
{
    rotate 30
    daily
    dateext
    copytruncate
    #notifempty
    missingok
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    endscript
}



這裏有個postrotate其實還有prerotate。
prerotate是切割管理前執行的腳本,postrotate是切割後進執行的腳本。
nginx須要在切割後再執行kill -USR1 `cat /usr/local/nginx/log/nginx.pid`從新生成日誌,若是直接mv什麼的會由於nginx進程一直在內存中因此一直等待。 post

再粘貼點logrotate的經常使用參數: spa

daily指定轉儲週期爲天天 
weekly指定轉儲週期爲每週 
monthly指定轉儲週期爲每個月 
dateext在文件末尾添加當前日期 
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轉儲後的日誌文件和當前日誌文件放在同一個目錄下 
rotate count指定日誌文件刪除以前轉儲的次數,0 指沒有備份,5 指保留5 個備份 
tabootext [+] list讓logrotate 不轉儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave, v, 和 ~ 
size size當日志文件到達指定的大小時才轉儲,Size 能夠指定 bytes (缺省)以及KB (sizek)或者MB (sizem). 
prerotate/endscript在轉儲之前須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript在轉儲之後須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行



最多見的執行參數爲:--v 詳細    -f  強制. 日誌

/usr/sbin/logrotate -f /root/tomcatslog
若是是放在/etc/crond.daily或都crond.weekly等之類的必定要注意,系統執行的時間。
由於centos6的crond.daily之類的都不是有crond在控制執行而是有anacrond來管理,其差異本身去baidu瞭解。因此若是是天天定時的話。仍是交給crontab吧。 code

相關文章
相關標籤/搜索