2010-06-10 164 views
92

当我启动Tomcat我得到以下错误:Tomcat启动日志 - 严重:错误filterStart如何获取堆栈跟踪?

Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start 
SEVERE: Error filterStart 
Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start 
SEVERE: Context [/mywebapplication] startup failed due to previous errors 

这似乎很奇怪,对Tomcat的日志不包括堆栈跟踪。有人建议如何增加Tomcat中的日志记录以获取此类错误的堆栈跟踪吗?

+1

我使用的吉斯 - Servlet和做在我的设置方法使用try/catch这个框架我能捕获所有异常并在记录自己后重新推出它们。我仍然不得不盲目调试让Guice-Servlet的过滤器工作,但添加的任何东西似乎都可以工作。 – benstpierre 2010-06-21 16:54:19

+1

似乎堆栈跟踪转到标准输出,但Intellij不读取Tomcat的标准输出。 http://tomcat.apache.org/tomcat-6.0-doc/logging.html我需要在tomcat中将stdout重定向到一个文件,以便Intellij可以查看它。 – benstpierre 2010-06-22 19:28:37

回答

130

检查localhost_yyyy_mm_dd.loglocalhost.yyyy-mm-dd.log日志,这些日志Tomcat的创建,这些通常存储类型信息的。我不希望完整的stacktrace被转储到标准输出。

+0

我的Tomcat 5.5实例不写入该文件。 – 2010-11-07 11:52:47

+3

到目前为止,“error filterStart”一直困扰着我的噩梦......不再长!你摇滚! – 2012-10-01 17:16:19

+0

你很高兴在开发过程中发现这些东西之一。非常感谢。 – 2013-01-17 13:04:19

1

设置为Tomcat的log4j日志记录是非常简单的。从http://tomcat.apache.org/tomcat-5.5-doc/logging.html引述如下:

  1. 创建一个名为log4j.properties,内容如下,并保存成普通/班。

      log4j.rootLogger=DEBUG, R 
          log4j.appender.R=org.apache.log4j.RollingFileAppender 
          log4j.appender.R.File=${catalina.home}/logs/tomcat.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 
    
  2. 下载Log4J的(v1.2或更高版本),并放置在$ CATALINA_HOME/log4j的罐子common/lib目录。

  3. 下载Commons Logging并将log4j jar放入$ CATALINA_HOME/common/lib中的commons-logging-x.y.z.jar(不是commons-logging-api-x.y.z.jar)。
  4. 启动Tomcat

你也可能想看看http://wiki.apache.org/tomcat/FAQ/Logging

+0

这个原因是否会将异常部署到实际正确的日志中? – benstpierre 2010-06-21 16:45:42

+0

是的。我已经使用这个确切的方法在部署过程中发现问题的原因。 – Tommi 2010-06-21 19:27:28

+1

抱歉,日志级别为DEBUG,日志文件难以理解。它确实包含了一些似乎与这个问题没有任何关系的例外 - 我怀疑这是我的情况下的一个Struts问题。 – 2010-11-07 12:23:40

79

创建WEB-INF/classes目录名为logging.properties有以下内容的文件:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler 
+6

这为我节省了很多时间。谢谢。! – 2014-03-06 00:10:36

+2

这使我能够在我的一个tomcat过滤器(ServletContextListener)中检测到异常。谢谢! – simou 2014-04-30 13:38:51

+0

这是我的工作,谢谢! – Jason 2015-09-07 11:42:16

5

也许您的应用程序使用与Tomcat不同的JRE进行编译。

检查java -version您的服务器上,然后使用相同版本的编译代码。 我有错误,因为我的Eclipse标准JRE是1.6和Tomcat使用1.5 - 这是行不通的。

18

Tomcat的确实记录的堆栈跟踪,但它并不总是很清楚其中的日志文件,当Tomcat从IDE开始。当我从IntelliJ启动它时,CATALINA_BASE设置为${home}/.IntelliJIdea10/system/tomcat/Unnamed_r6-idea,并且日志文件位于[CATALINA_BASE]/logs中。

要查看日志,要么找到日志文件,或编辑[CATALINA_HOME]/conf/logging.properties直接tomcat的记录器输出到控制台。下面我添加了第二个处理器的默认Tomcat配置:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

现在全堆栈跟踪出现在的IntelliJ输出:

Dec 27, 2011 12:02:45 PM org.apache.catalina.core.StandardContext filterStart 
SEVERE: Exception starting filter filterChainProxy 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'filterChainProxy' is defined at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529) 
. . . 
+0

thx非常,它解决了我的错误 – Frank 2016-02-29 11:06:05

0

只是想花的最后一小时在几乎相同的问题后做出贡献。我的解决方案是,我们的应用程序.jar被破坏了,所以从我们的开发服务器中放置jar提供了一个修复程序。

0

我有一个类似的问题。雷纳托的小费为我工作。我使用了旧版本的java类文件(位于WEB-INF/classes文件夹下),问题消失了。所以,它应该是编译器版本不匹配。

1

如果有人越来越像 严重错误:错误filterStart 2013年4月29日下午四点49分二十秒org.apache.catalina.core.StandardContext startInternal 重度:上下文[/ TraceMW]启动失败由于先前的错误

那么请检查你的tomcat/lib目录是否包含cors-filter-1.5.jar。 如果你点有你会得到以上错误,并且你的应用程序将不可用。

所以,我只是设法从其他Tomcat文件夹复制jar文件,我没有得到上述错误后。

2

在CentOS 6的和Solr 4.4.0

我不得不COMP一些LIB文件收到此错误解决

cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/ 
+0

这也解决了我的问题。 Ubuntu 14.04和solr 4.8.1和tomcat 7. – cjungel 2014-09-23 17:14:08

9

你需要复制的文件

cp /path/to/solr/example/lib/ext/* /path/to/tomcat/lib 
cp /path/to/solr/example/resources/* /path/to/tomcat/lib // or inside extracted solr 

,然后restart tomcat

+3

耶,这救了我! 。另外,查看/path/to/solr/example/resources/log4j.properties并编辑日志目录 – r3x 2014-08-20 21:29:34

+0

这将是一个不错的主意,这真的可以节省我。我花了很多时间来解决这个问题。 – Tung 2016-01-28 01:08:36

0

这样做了技巧:只需删除所有库,然后编译并运行。它会促使他们在你的项目中出现错误确认。应用库后重新运行项目。

1

我也得到了同样的错误,并且在解决这个问题上挣扎了很多。在搜索Google时花了一点时间,发现了以下解决方案,我的问题得到了解决。

该问题是由于在部署路径中缺少Struts2库。大多数人可能会把库编译,并且往往忘记附加运行库所需的库。所以我在Web部署程序集中添加了相同的库,问题是关闭的。

0

一般服务器的JDK版本会比部署的应用程序(具有较高的JDK版本内置)

1

我得到了同样的问题,无法一旦它被部署在Tomcat中启动应用程序低。但是,一旦我将Struts的一组jar文件复制到CATALINA_HOME \ lib(Tomcat dir)目录中,它就会被解析。您不需要在WEB_INF \ lib中包含这些jar,但是您需要将它们放入Build Path中。

公地文件上传-1.2.1.jar

公地IO-1.3.2.jar

freemarker的-2.3.16.jar

了Javassist,3.11.0.GA.jar

Struts2的会展-插件-2.2.1.jar

Struts2的核心 - 2.2.1.jar

xwork-core-2.2.1.jar

2

通常在localhost中有关于问题的信息[date] .log。 但有时在这个日志中没有任何东西。如果项目有混乱的配置(几个开发人员在其上工作了很长时间并且每个人都从他自己添加了一些东西),就会发生这种情况。 我遇到了这个问题,没有任何日志信息。相当快速和可靠的方法:

  1. 尝试从web.xml中删除所有可能导致任何问题的东西。你甚至可以删除标签以外的所有东西如果应用程序仍然无法部署 - 继续。

  2. 从WEB-INF/classes中删除每个* .xml描述符。如果应用程序无法部署 - 继续。

  3. 删除所有您可以在war中找到的日志配置(logging.properties,log4j.properties)。尝试部署。在这一步,我得到了更多的信息错误,但部署仍然失败。

google搜索这个错误后,我发现,项目包括旧版本的Xerces,这与Tomcat的版本(这是新的),并没有要部署的应用程序发生冲突。在网络应用程序中升级xerces后,一切都变好了。

-1

运行以下命令来显示终端上卡塔利娜日志---

sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out