【Tomcat】如何解决catalina.out文件过大的问题
生活随笔
收集整理的這篇文章主要介紹了
【Tomcat】如何解决catalina.out文件过大的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Tomcat默認生成的日志文件catalina.out,隨著時間的推移,逐漸增大,可能達到G數量級。文件過大,我們將無法使用過常規編輯工具查看,嚴重影響系統維護工作。解決此問題,主要從Tomcat和代碼兩方面考慮。
一、 代碼本身考慮 Tomcat輸出catalina.out文件,數據主要來源為:System.out 和 System.err 在控制臺上直接輸出的信息。為了減少日志輸出的壓力,規范代碼習慣,編碼時應避免使用System.out.println()和e.printStackTrace()。
二、 Tomcat配置考慮
1、 Tomcat使用log4j 我們知道,tomcat默認使用Java.util.logging進行日志打印,并且Linux默認都將應用日志打印在catalina.out。當系統長期運行,我們就會發現問題:catalina.out日志量越來越大,對我們查看和管理都極其不便。(默認tomcat的catalina日志不支持每天一個文件那種配置) 解決以上問題有幾種思路,網上討論得較多的就是日志切割,如通過cronolog工具進行日切。這種方式治標不治本,不夠靈活。我們web項目通常都會使用log4j進行日志打印,并且log4j本身就支持按日(按月/按小時/按分鐘等)打印日志,還有豐富的配置,只需要對tomcat配置稍加修改即可實現。 1)準備jar包: log4j-1.2.17.jar(下載) tomcat-juli.jar,tomcat-juli-adapters.jar (下載,根據你的Tomcat版本選擇對應的分支) 2)將上面的三個jar包拷貝到 Tomcat 的 lib 目錄下;將 tomcat-juli.jar 再拷貝到 Tomcat 的bin 目錄下,替換原有的jar包; 3)修改 Tomcat 的 conf/context.xml文件,將<Context>改為<Context swallowOutput="true">,可以減少控制臺日志的輸出 (增加swallowOutput="true" 的屬性配置,只有這樣才能完全的把tomcat的stdout給接管過來。這一步很關鍵在官網及網上找了許多資料都沒有提及。); 4)刪除 Tomcat 的 conf/logging.properties文件(或者重命名-建議); 5)把工程中的log4j.properties 文件拷貝到在 Tomcat 的 lib 目錄下; 6)重啟tomcat
2、 Tomcat配置 部署服務時,修改Tomcat的conf/context.xml文件,將<Context>改為<Context swallowOutput="true">; 3、 使用cronolog工具分割 (cronolog的使用) A、 cronolog工具下載 官方URL:http://cronolog.org/download/index.html B、 cronolog編譯安裝 [TSP@tsp-dev-webservice ~]$ tar xvf cronolog-1.6.2.tar.gz [TSP@tsp-dev-webservice cronolog-1.6.2]$ ./configure [TSP@tsp-dev-webservice cronolog-1.6.2]$ make [TSP@tsp-dev-webservice cronolog-1.6.2]$ sudo make install C、 修改Tomcat啟動腳本catalina.sh a、 修改輸出日志路徑 修改: if [ -z "$CATALINA_OUT" ] ; thenCATALINA_OUT="$CATALINA_BASE"/logs/catalina.out fi 為: if [ -z "$CATALINA_OUT" ] ; thenCATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out fi b、 刪除生成日志文件 注釋: touch "$CATALINA_OUT" 為: #touch "$CATALINA_OUT" c、 修改啟動腳本參數 修改: org.apache.catalina.startup.Bootstrap "$@" start \>> "$CATALINA_OUT" 2>&1 "&" 為: org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null & D、 重啟Tomcat Tomcat輸出日志文件分割成功,輸出log文件格式為:catalina.2014-08-15.out類型。
一、 代碼本身考慮 Tomcat輸出catalina.out文件,數據主要來源為:System.out 和 System.err 在控制臺上直接輸出的信息。為了減少日志輸出的壓力,規范代碼習慣,編碼時應避免使用System.out.println()和e.printStackTrace()。
二、 Tomcat配置考慮
1、 Tomcat使用log4j 我們知道,tomcat默認使用Java.util.logging進行日志打印,并且Linux默認都將應用日志打印在catalina.out。當系統長期運行,我們就會發現問題:catalina.out日志量越來越大,對我們查看和管理都極其不便。(默認tomcat的catalina日志不支持每天一個文件那種配置) 解決以上問題有幾種思路,網上討論得較多的就是日志切割,如通過cronolog工具進行日切。這種方式治標不治本,不夠靈活。我們web項目通常都會使用log4j進行日志打印,并且log4j本身就支持按日(按月/按小時/按分鐘等)打印日志,還有豐富的配置,只需要對tomcat配置稍加修改即可實現。 1)準備jar包: log4j-1.2.17.jar(下載) tomcat-juli.jar,tomcat-juli-adapters.jar (下載,根據你的Tomcat版本選擇對應的分支) 2)將上面的三個jar包拷貝到 Tomcat 的 lib 目錄下;將 tomcat-juli.jar 再拷貝到 Tomcat 的bin 目錄下,替換原有的jar包; 3)修改 Tomcat 的 conf/context.xml文件,將<Context>改為<Context swallowOutput="true">,可以減少控制臺日志的輸出 (增加swallowOutput="true" 的屬性配置,只有這樣才能完全的把tomcat的stdout給接管過來。這一步很關鍵在官網及網上找了許多資料都沒有提及。); 4)刪除 Tomcat 的 conf/logging.properties文件(或者重命名-建議); 5)把工程中的log4j.properties 文件拷貝到在 Tomcat 的 lib 目錄下; 6)重啟tomcat
2、 Tomcat配置 部署服務時,修改Tomcat的conf/context.xml文件,將<Context>改為<Context swallowOutput="true">; 3、 使用cronolog工具分割 (cronolog的使用) A、 cronolog工具下載 官方URL:http://cronolog.org/download/index.html B、 cronolog編譯安裝 [TSP@tsp-dev-webservice ~]$ tar xvf cronolog-1.6.2.tar.gz [TSP@tsp-dev-webservice cronolog-1.6.2]$ ./configure [TSP@tsp-dev-webservice cronolog-1.6.2]$ make [TSP@tsp-dev-webservice cronolog-1.6.2]$ sudo make install C、 修改Tomcat啟動腳本catalina.sh a、 修改輸出日志路徑 修改: if [ -z "$CATALINA_OUT" ] ; thenCATALINA_OUT="$CATALINA_BASE"/logs/catalina.out fi 為: if [ -z "$CATALINA_OUT" ] ; thenCATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out fi b、 刪除生成日志文件 注釋: touch "$CATALINA_OUT" 為: #touch "$CATALINA_OUT" c、 修改啟動腳本參數 修改: org.apache.catalina.startup.Bootstrap "$@" start \>> "$CATALINA_OUT" 2>&1 "&" 為: org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null & D、 重啟Tomcat Tomcat輸出日志文件分割成功,輸出log文件格式為:catalina.2014-08-15.out類型。
總結
以上是生活随笔為你收集整理的【Tomcat】如何解决catalina.out文件过大的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【RPC】你应该知道的 RPC 原理
- 下一篇: 【动态代理】从源码实现角度剖析JDK动态