我們知道,tomcat預設使用java.util.logging進行日志列印,并且LINUX預設都将應用日志列印在catalina.out。當系統長期運作,我們就會發現問題:catalina.out日志量越來越大,對我們檢視和管理都極其不便。(預設tomcat的catalina日志不支援每天一個檔案那種配置)
解決以上問題有幾種思路,網上讨論得較多的就是日志切割,如通過cronolog工具進行日切。我認為這種方式治标不治本,不夠靈活。我們web項目通常都會使用log4j進行日志列印,并且log4j本身就支援按日(按月/按小時/按分鐘等)列印日志,還有豐富的配置,幹嘛不用?而且隻需要對tomcat配置稍加修改即可實作。
1)準備jar包:
log4j-1.2.17.jar(從 http://www.apache.org/dist/logging/log4j/1.2.17/下載下傳)
tomcat-juli.jar,tomcat-juli-adapters.jar (從 http://www.apache.org/dist/tomcat/tomcat-7/v7.0.52/bin/extras/下載下傳,根據你的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檔案(或者重命名-建議);