這裏小白使用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目錄中的任務列表;
與logrotate相關的腳本也在/etc/cron.daily目錄中。運行的方式爲"/usr/bin/logrotate /etc/logrotate.conf";
/etc/logrotate.conf文件include了/etc/logrotate.d/目錄下的所有文件。還包括我們上面剛創建的tomcat文件;
/etc/logrotate.d/tomcat文件會觸發/usr/local/apache-tomcat-8.0.28/logs/catalina.out文件的輪轉。
以上是程序自動完成的,不需要我們干預。當然了,我們也可以使用手工的方式進行logrotate程序。在命令行進行如下運行:
1
logrotate
/etc/logrotate
.conf
或者只輪轉剛剛的tomcat配置文件,可以這樣運行:
1
logrotate --force
/etc/logrotate
.d
/tomcat
要想獲得logrotate程序的更多幫助信息,可以查看其man page,
1
man
logrotate
可以看一下catalina.out輪轉前後的文件大小,
輪轉之前:
1
2
3
4
du
-sh *
...
2.0G catalina.out
# 未輪轉之前的文件大小
...
輪轉之後的文件大小:
1
2
3
# du -sh catalina.out*
2.0M catalina.out
60M catalina.out.1.gz
# 輪轉之後,進行壓縮,日誌文件變得更小了
另外在Tomcat的logs目錄,每天都會產生很多日誌文件,我們也可以定期手工或使用定時任務來刪除7天前的日誌文件,這裏使用手工的方式進行演示,
1
2
cd
/usr/local/apache-tomcat-8
.0.28
/logs
find
-mtime +7 -
exec
rm
-f {} \;
好了,就到這裏了。希望可以幫到有需要的童鞋。