Tomcat日志文件catalina.out文件過大問題


隨着項目的運行,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時,就輪轉
}

 

以上是如何工作的呢?

  1. 每天晚上crond守護進程會運行在/etc/cron.daily目錄中的任務列表;

  2. 與logrotate相關的腳本也在/etc/cron.daily目錄中。運行的方式為"/usr/bin/logrotate /etc/logrotate.conf";

  3. /etc/logrotate.conf文件include了/etc/logrotate.d/目錄下的所有文件。還包括我們上面剛創建的tomcat文件;

  4. /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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM