在整合Spring+hibernate+Flex的时候,出项Error listenerStart错误,折腾的人都快疯了,由于Tomcat默认情况下不记录应用程序错误,就启动时候报个Error listenerStart就完事,根本不知道哪里出问题了,没办法,只能用log4j来排查。
首先新建一个log4j.properties文件。对log4j不熟的就直接把下面的内容复制进去就可以了:
log4j.rootLogger=info,Console,R
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c – %m%n
log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L – %m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n
log4j.logger.org.apache=info, R
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R
log4j.logger.org.apache.catalina.core=info, R
log4j.logger.org.apache.catalina.session=info, R
然后把log4j.properties放在tomcat安装目录下的/common/classes目录里面,还要找log4j.jar和commons-logging.jar两个jar包,放到tomcat安装目录下的/common/lib里,这三步缺一不可,然后再启动tomcat,错误就现原型了,原来了包冲突:spring和hibernate自带的包中都包含有asm.jar,所以要把asm.jar,asm-attrs.jar和cglib-2.1.3.jar删掉,注意。一定要要把asm-attrs.jar和cglib-2.1.3.jar也删掉,只保留asm-2.2.2.jar ,asm-commons-2.2.2.jar,asm-util-2.2.2.jar,我开始就是忽略了cglib-2.1.3.jar,一直找不到问题的原因。
最后别忘了删掉log4j.properties,log4j产生的日志文件很庞大,一个不小心会塞爆你的硬盘。毕竟,杀手锏不是用来随便用的!
在tomcat中用log4j配置日志系统
在tomcat中用log4j配置日志系统:a)
第一步:下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.
第二步:写配置文件log4j.properties:
#log4j.properties
log4j.rootLogger=warn, A1,warnlog
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.warnlog=org.apache.log4j.FileAppender
log4j.appender.warnlog.MaxFileSize=50000KB
log4j.appender.warnlog.MaxBackupIndex=0
log4j.appender.warnlog.file=F:/UserWorkSpace/jiangcm/logs/warn.html
log4j.appender.warnlog.layout=org.apache.log4j.HTMLLayout
log4j.appender.warnlog.layout.ConversionPattern=%d %X %-5p %m%n
log4j.logger.org.apache=warn
第三步:在目录“F:/UserWorkSpace/jiangcm/logs”下新建warn.html文件;
第四步:把该log4j.properties文件放到$CATALINA_HOME/common/classes/目录下.
第五步:重启tomcat.
ok,现在就已经在tomcat中配置好log4j了。
b)如何使用?——在.java文件中得到一个Logger对象,然后就可以直接输出日志了。如下例子所示:
//Bar.java
package com.foo;
import org.apache.log4j.Logger;
public class Bar {
static Logger logger = Logger.getLogger(Bar.class);
public void doIt() {
logger.debug("there is a debug...");
logger.info("there is a info...");
logger.warn("there is a warning...");
}
}
ok!也就是说在tomcat中配置,只需要把log4j.jar和log4j.properties分别放到$CATALINA_HOME/common/
的lib和classes下就ok了!不需要再做别的设置,在.java中直接使用即可。
c)注意两个问题:
1.tomcat下面 Log4j.properties不认, 只认log4j.properties
resource url:
http://www.blogjava.net/zJun/archive/2006/06/30/55511.html#55860
2.关于“log4j:WARN Please initialize the log4j system properly”:
你的tomcat/common/lib下是不是有个log4j的jar啊?删了试试!应该没问题
来源:javaeye(http://jonc.javaeye.com/blog/579083)
昨天部署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/log4j/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/ tomcat / tomcat -6/v6.0.14/bin/extras/ tomcat -juli-adapters.jar
http://www.apache.org/dist/ tomcat / tomcat -6/v6.0.14/bin/extras/ tomcat -juli.jar
在Tomcat6.0中,
将 tomcat -juli-adapters.jar,log4j-1.2.15.jar,log4j.properties复制到apache-tomcat-6.0.20\lib下面.
将 tomcat -juli.jar复制到apache-tomcat-6.0.20\bin\下面.
然后启动 tomcat ,就可以在apache-tomcat-6.0.20\logs下看到webapp.log了.
在 Tomcat5.5中,
将commons-logging-1.1.jar,log4j-1.2.15.jar,复制到apache- tomcat -5.5.25\common\lib下面.
将log4j.properties复制到apache- tomcat -5.5.25\common\classes下面.
然后启动 tomcat ,就可以在apache- tomcat -5.5.25\logs下看到webapp.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” )。