隨着項目的運行,Tomcat的日志文件catalina.out的大小日益增大,現在都有好幾個GB了。如果我們不做任何處理,catalina.out的文件大小將會持續增加,直到把我們的系統硬盤空間給撐爆不可。
當Tomcat的日志文件catalina.out的大小大於2GB時,Tomcat程序崩潰時將有可能會啟動失敗並且不會有任何錯誤信息提示。為了避免該場景的出現,我們要定期輪轉catalina.out日志文件。
這里小白使用CentOS6U5自帶的logrotate程序來解決catalina.out的日志輪轉問題。這種方式比較簡單。在/etc/logrotate.d/目錄下新建一個名為tomcat的文件,
1
2
3
4
5
6
7
8
9
10
|
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
|
以上的配置說明:
1
2
3
4
5
6
7
8
|
/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 {} \;
|
轉自:http://blog.51cto.com/lavenliu/1765791