天天看點

使用logrotate工具處理tomcat Catalina.out檔案過大

随着項目的運作,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