logrotate是個強大的系統軟體,它對記錄檔有著一套完整的操作模式,譬如:轉儲、郵件和壓縮等,並且預設logrotate加到cron(/etc/cron.daily/logrotate)作為每日任務執行。自動有了logrotate,我想不用再自己寫日誌切割指令碼。
如下對Tomcat日誌catalina.out日誌切割
# ls -lh /usr/local/tomcat/logs/catalina.out-rw-r--r-- 1 www www 14M Aug 28 15:55 /usr/local/tomcat/logs/catalina.out配置logrotate對catalina.out日誌切割# cat /etc/logrotate.d/tomcat/usr/local/tomcat/logs/catalina.out {dailyrotate 5missingokdateextcompressnotifemptycopytruncate}
參數詳解:
daily 指定轉儲周期為每天rotate 5 指定記錄檔刪除之前轉儲的次數,0指沒有備份,5指保留5個備份missingok 如果日誌不存在則忽略該警告資訊dateext 檔案尾碼是日期格式,也就是切割後檔案是:xxx.log-20150828.gzcompress 通過gzip壓縮轉儲以後的日誌(gzip -d xxx.gz解壓)notifempty 如果是空檔案的話,不轉儲copytruncate 用於還在開啟中的記錄檔,把當前記錄備份並截斷
立即截斷日誌:
# logrotate --force /etc/logrotate.d/tomcat效果如下:# ls -lh /usr/local/tomcat/logs/catalina.out*-rw-r--r-- 1 www www 0 Aug 28 16:00 /usr/local/tomcat/logs/catalina.out-rw-r--r-- 1 www www 1.1M Aug 28 16:00 /usr/local/tomcat/logs/catalina.out-20150828.gz