切割 Tomcat 的 catalina.out 文件,解決日誌文件過大的問題

Tomcat 下日誌文件 catalina.out 過大,幾百兆或幾十個G,進而形成再也沒法寫入更多的日誌內容,至使 Tomcat 沒法處理請求。而後你能夠在 $TOMCAT_HOME/logs 目錄下看到文件 catalina.out 卻一直在膨脹。html

你能夠每次手工或定時(crontab/計劃任務)清理 catalina.out 文件,或是規劃好日誌輸出(終究也會有滿的時候)。再就是有兩種較好的解決方案去真正的切分 catalina.out 文件,讓 catalina.out 只存有最新的日誌。apache

一. 改用 Log4J 來輸出 Tomcat 日誌,藉助 Log4J 的各類日誌切分的功能。詳情可參考: http://baalwolf.iteye.com/blog/1464093http://tomcat.apache.org/tomcat-6.0-doc/logging.htmltomcat

二. Linux 下使用 cronolog 工具來切分 catalina.out工具

這裏重點介紹這種方法,具體步驟以下:spa

1. 下載安裝 cronolog,它的主頁 http://cronolog.org. 下載的是源碼,安裝過程就是 ./configure, make, make install,最後一步可直接把 src/cronolog 執行文件拷入到某個適合的目錄,如 /usr/local/sbin/ 目錄。日誌


2. 編輯 bin/catalina.sh 文件。code

    1)找到下面行並把它用 # 註釋掉htm

touch "$CATALINA_BASE"/logs/catalina.outblog

    在新 Tomcat7 的 bin/catalina.sh 文件要註釋的行是crontab

touch "$CATALINA_OUT"

    2)替換下面的行(有兩處,不過通常在 -security 中的那一行不須要去關注,不妨兩處全替換了)

>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

    爲

2>&1 |/usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.log" &

在新 Tomcat7 的 bin/catalina.sh 中是須要替換行是

>> "$CATALINA_OUT" 2>&1 "&"

替換後該行的內容與上面是同樣的。

爲何 Tomcat7 後會有所不一樣,由於在它的 catalina.sh 文件中有以下定義

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out


3. 保存 catalina.sh 文件,重啓 Tomcat 便可。

之後看到 $TOMCAT_HOME/logs/ 下的就是 catalina-2012-09-16.out, catalina-2012-09-17.out ...... 一系列文件,好像 cronolog 又沒提供方式來控制歸檔的日誌文件個數。並且這樣以後,將不會產生 catalina.out 文件了。

參考:http://www.tomcatexpert.com/knowledge-base/rotating-catalinaout-log-files

相關文章
相關標籤/搜索