日誌是Linux系統中最重要的部分之一,經過日誌能夠知道系統中正在發生什麼或者發生過什麼,極大的方便了系統管理,常見的linux發行版中都自帶了logrotate程序來管理系統日誌,固然logrotate也能夠用來管理軟件日誌。使用logrotate有如下幾點好處:
1.大多數系統自帶,不用安裝 
2.配置簡單,功能很強大
3.可靠性高node

我生產上就是用Logrotate來管理tomcat日誌,因爲生產環境上tomcat比較忙碌,天天的日誌都十幾G,已經到了不起不分割的程度。配置方法:linux

首先要配置tomcat日誌的分割,而後經過指定日誌分割時間。web

1、配置tomcat的日誌分割

在logrotate配置目錄 /etc/logrotate.d/ 下新建一個名爲tomcat的文件,內容爲:centos

/opt/tomcat-7.0/logs/catalina.out{ rotate 2 copytruncate nocompress notifempty missingok nomail noolddir daily dateext }

這裏參數的詳細說明附在最後。tomcat

2、指定分割時間

因爲logrotate是基於cronjob執行的,默認cronjob daily的定時任務執行時間是4:02分(centos 5系列),咱們是要天天的日誌轉儲成一個新文件,而不是兩天的日誌混在一塊兒,因此還要修改一下cron daily的執行時間:
centos 5 系列cronjob daily執行時間是在/etc/crontab文件中配置。post

59 23 * * * root run-parts /etc/cron.daily

注意時間是在天天23:59分執行,這裏轉儲後的文件名中的日期纔是正確的.測試

centos 6 系列daily、monthly等文件夾裏面的任務已經不用crond處理,而是交給anacron處理,執行時間有延遲時間不是固定的,要自定義這些定時任務的執行時間有三種方法:url

1.關閉anacron,使用crond管理daily等任務的時間spa

yum remove cronie-anacron yum install cronie-noanacron

以後加上:

01 * * * * root run-parts /etc/cron.hourly 59 23 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

這樣就和centos 5系列同樣,能夠經過修改/etc/crontab來控制定時任務執行時間了

2.編輯/etc/anacrontab文件
首先要設置RANDOM_DELAY=0和START_HOURS_RANGE=0-0,這樣能夠設置爲天天零點執行,在將cron.daily設置成

1 0 cron.daily nice run-parts /etc/cron.daily

看了一下anacron說明和anacrontab文件的格式,以爲這種方法可行,可是我沒有測試,若是想用這種方法,請務必先測試。

3.將tomcat 文件放在其它目錄,這樣天天執行cron.daily時就不會分割,而後添加定時任務來分割

59 23 * * * root run-parts /usr/sbin/logrotate /root/tomcat

3、logrotate參數說明

參數名稱 含義 compress 經過gzip 壓縮轉儲之後的日誌 nocompress 不壓縮轉儲 copytruncate 打開中的日誌轉儲 copytruncate 打開中的日誌轉儲 nocopytruncate 備份日誌文件,可是不截斷 nocreate 不創建新日誌 delaycompress 延遲壓縮,和compress一塊兒使用時,轉儲的日誌文件到下一次轉儲時才壓縮 nodelaycompress 轉儲並壓縮 errors address 轉儲時錯誤信息發送指定地址 ifempty 文件爲空也轉儲 notifempty 若是文件爲空,不轉儲 mail address 發送轉儲日誌到指定郵箱 nomail 轉儲不發郵件 olddir directory 轉儲後的日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統 noolddir 轉儲後的日誌文件和當前日誌文件放在同一個目錄下 prerotate/endscript 在轉儲之前須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行 postrotate/endscript 在轉儲之後須要執行的命令能夠放入這個對,這兩個關鍵字必須單獨成行 daily 按天存儲 weekly 按周存儲 monthly 按月存儲 rotate count 日誌轉存保留的前多少份,多餘的會被刪除 tabootext [+] list 讓logrotate 不轉儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave, v, 和 ~ size size 當日志文件到達指定的大小時才轉儲,Size 能夠指定 bytes (缺省)以及KB (sizek)或者MB extension 指定轉存日誌後綴名,例如 .log dateformat 設置日誌文件名日期格式默認爲 %Y%m%d

參考文章:
http://blog.jikr.cn/logrotate-cut-the-web-logs/
http://abdussamad.com/archives/390-Scheduling-system-maintenance-cron-jobs-in-CentOSRHEL-6.x.html