Error listenerStart 错误,Tomcat终极排错杀手

来源:互联网 发布:清除session php 编辑:程序博客网 时间:2024/05/17 23:03


在整合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啊?删了试试!应该没问题



用log4j输出tomcat详细日志  

2010-04-22 11:25:00|  分类:中间件 |字号 订阅

来源: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” )。

原创粉丝点击