開發測試中經常有tomcat報[嚴重]的錯,但沒有明細,這種情況下要手工配置tomcat 的log參數。
昨天部署web應用到Tomcat之后,無法成功啟動,并且控制臺沒有詳細的錯誤信息,
頂多就兩行提示信息,例如:
嚴重: Error listenerStart
嚴重: Context [/lizongbo] startup failed due to previous errors
或者
嚴重: Error filterStart
org.apache.catalina.core.StandardContext start
嚴重: Context startup failed due to previous errors
查找logs目錄下的信息,除了這兩句話,也沒別的輔助內容.
給查錯帶來了困難,在這種情況下,是因為Tomcat自身的默認日志沒有將一些錯誤信息輸出到控制臺或文件,
這個時候則需要配置Tomcat自身的log,啟用詳細的調試日志.
在Tomcat 5.5和Tomcat 6.0中的配置基本一樣,只是相關文件放的目錄有所不同.
首先需要準備的文件為:
1.log4j.jar , 下載地址 : http://www.apache.org/dist/logging/--escaped_anchor:e0a22b16b97ca8dedb8d5b8c15ffbcaa--/1.2.15/apache-log4j-1.2.15.zip
2.Tomcat 5.5所需的 commons-logging.jar,下載地址: http://www.apache.org/dist/commons/logging/binaries/commons-logging-1.1.zip
3.log4j配置文件:
log4j.properties
配置內容為:
log4j.rootLogger=ERROR,R
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%p]%t-%c-%m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/lizongbo.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%p]%t-%c-%m%n
log4j.logger.org.apache.catalina=INFO,R,CONSOLE
#日志級別不能太低,如果配置為debug的話,輸出的日志信息太多,導致tomcat啟動非常的慢.
4.Tomcat 6.0所需的juli替換文件:
http://www.apache.org/dist/--escaped_anchor:079305423cce36d6691457475e081123--/tomcat-6/v6.0.14/bin/extras/tomcat-juli-adapters.jar
http://www.apache.org/dist/--escaped_anchor:079305423cce36d6691457475e081123--/tomcat-6/v6.0.14/bin/extras/tomcat-juli.jar
在Tomcat6.0中,
將tomcat-juli-adapters.jar,log4j-1.2.15.jar,log4j.properties復制到D:\Java\ApacheTomcat6.0.14\lib下面.
將tomcat-juli.jar復制到D:\Java\apache-tomcat-6.0.14\bin\下面.
然后啟動tomcat,就可以在D:\Java\apache-tomcat-6.0.14\logs下看到lizongbo.log了.
在 Tomcat5.5中,
將commons-logging-1.1.jar,log4j-1.2.15.jar,復制到D:\Java\apache-tomcat-5.5.25\common\lib下面.
將log4j.properties復制到D:\Java\apache-tomcat-5.5.25\common\classes下面.
然后啟動tomcat,就可以在D:\Java\apache-tomcat-5.5.25\logs下看到lizongbo.log了.
在這個時候,再通過日志文件來分析,則會發現出現這種錯誤的情況可能有:
(以下是我遇到的出錯情況,大多是些低級錯誤)
1.webapps要用到的classe文件根本沒有復制到WEB-INF/classes目錄下面
(java.lang.NoClassDefFoundError,而這個信息可能默認沒輸出到控制臺,尤其是用了spring的,昨天就是這個粗心的低級錯誤)
2.要用到lib文件沒有復制完,缺少lib
3.lib下的同一個庫的jar文件存在多個不同版本,引起版本沖突.
4.lib下的jar與tomcat版本不相對應(我遇到的問題是web應用在Tomcat5.5上運行正常,換到Tomcat6.0上就出錯,
例如一個用了struts的webapp在Tomcat 6上報下面的錯誤
“Parse Fatal Error at line 17 column 6: The processing instruction
target matching “[xX][mM][lL]” is not allowed” )
愿意看英文的可以參考官方網站說明:
http://tomcat.apache.org/tomcat-6.0-doc/logging.html
http://tomcat.apache.org/tomcat-5.5-doc/logging.html