随着項目的運作,Tomcat的日志檔案catalina.out的大小日益增大,現在都有好幾個GB了。如果我們不做任何處理,catalina.out的檔案大小将會持續增加,直到把我們的系統硬碟空間給撐爆不可。
當Tomcat的日志檔案catalina.out的大小大于2GB時,Tomcat程式崩潰時将有可能會啟動失敗并且不會有任何錯誤資訊提示。為了避免該場景的出現,我們要定期輪轉catalina.out日志檔案。
這裡小白使用CentOS6U5自帶的logrotate程式來解決catalina.out的日志輪轉問題。這種方式比較簡單。在/etc/logrotate.d/目錄下建立一個名為tomcat的檔案,
cat >/etc/logrotate.d/tomcat <<EOF
/usr/local/apache-tomcat-8.0.28/logs/catalina.out{
copytruncate
daily
rotate 7
missingok
compress
size 16M
}
EOF
以上的配置說明:
/usr/local/apache-tomcat-8.0.28/logs/catalina.out{ # 要輪轉的檔案
copytruncate # 建立新的catalina.out副本後,截斷源catalina.out檔案
daily # 每天進行catalina.out檔案的輪轉
rotate 7 # 至多保留7個副本
missingok # 如果要輪轉的檔案丢失了,繼續輪轉而不報錯
compress # 使用壓縮的方式(非常有用,節省硬碟空間;一個2~3GB的日志檔案可以壓縮成60MB左右)
size 16M # 當catalina.out檔案大于16MB時,就輪轉
}
以上是如何工作的呢?
每天晚上crond守護程序會運作在/etc/cron.daily目錄中的任務清單;
/etc/logrotate.conf檔案include了/etc/logrotate.d/目錄下的所有檔案。還包括我們上面剛建立的tomcat檔案;
/etc/logrotate.d/tomcat檔案會觸發/usr/local/apache-tomcat-8.0.28/logs/catalina.out檔案的輪轉。
以上是程式自動完成的,不需要我們幹預。當然了,我們也可以使用手工的方式進行logrotate程式。在指令行進行如下運作:
logrotate /etc/logrotate.conf
或者隻輪轉剛剛的tomcat配置檔案,可以這樣運作:
logrotate --force /etc/logrotate.d/tomcat
要想獲得logrotate程式的更多幫助資訊,可以檢視其man page,
man logrotate
可以看一下catalina.out輪轉前後的檔案大小,
輪轉之前:
du -sh *
...
2.0G catalina.out # 未輪轉之前的檔案大小
...
輪轉之後的檔案大小:
# du -sh catalina.out*
2.0M catalina.out
60M catalina.out.1.gz # 輪轉之後,進行壓縮,日志檔案變得更小了
另外在Tomcat的logs目錄,每天都會産生很多日志檔案,我們也可以定期手工或使用定時任務來删除7天前的日志檔案,這裡使用手工的方式進行示範,
cd /usr/local/apache-tomcat-8.0.28/logs
find -mtime +7 -exec rm -f {} \;
好了,就到這裡了。希望可以幫到有需要的童鞋。
來自于:
http://blog.51cto.com/lavenliu/1765791