Tomcat 启动日志 - 严重:错误 filterStart 如何获取堆栈跟踪?
Posted
技术标签:
【中文标题】Tomcat 启动日志 - 严重:错误 filterStart 如何获取堆栈跟踪?【英文标题】:Tomcat startup logs - SEVERE: Error filterStart how to get a stack trace? 【发布时间】:2011-03-02 07:15:29 【问题描述】:当我启动 Tomcat 时出现以下错误:
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 中的日志记录以获取此类错误的堆栈跟踪有什么建议吗?
【问题讨论】:
我正在使用 Guice-Servlet,通过围绕我的设置方法为这个框架执行 try/catch,我能够捕获所有异常并在记录自己后重新抛出它们。我仍然不得不盲目地调试 Guice-Servlet 的过滤器才能工作,但添加到其中的任何东西似乎都可以工作。 似乎堆栈跟踪转到标准输出,但 Intellij 没有读取 Tomcat 的标准输出。 tomcat.apache.org/tomcat-6.0-doc/logging.html 我需要将 tomcat 中的 stdout 重定向到一个文件,以便 Intellij 可以查看它。 【参考方案1】:检查 Tomcat 创建的 localhost_yyyy_mm_dd.log
或 localhost.yyyy-mm-dd.log
日志,这些日志通常存储该类型的信息。我不希望完整的堆栈跟踪被转储到标准输出。
【讨论】:
我的 Tomcat 5.5 实例没有写入该文件。 到目前为止,“error filterStart”一直困扰着我的噩梦……不再!你摇滚! 在开发过程中您会很高兴发现这些东西。非常感谢。 我的 Tomcat 6(默认设置)从不向文件写入任何内容,我必须打开 ConsoleHandler 才能读取问题所在,并将异常写入 Catalina 输出文件。 @mattblang 看看 $TOMCAT_HOME/conf/logging.properties。默认设置是违反直觉的。【参考方案2】:在 WEB-INF/classes 中创建一个名为 logging.properties 的文件,内容如下:
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
【讨论】:
请注意,如果您在 WEB-INF 中没有 classes 目录,您可以创建一个,它会正常工作。【参考方案3】:Tomcat 确实会记录堆栈跟踪,但当从 IDE 启动 tomcat 时,日志文件的位置并不总是很清楚。当我从 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)
. . .
【讨论】:
【参考方案4】:你需要复制文件
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
然后重启 tomcat
【讨论】:
耶,这救了我! .此外,最好查看 /path/to/solr/example/resources/log4j.properties 并编辑您的日志目录【参考方案5】:也许您的应用程序是使用与 Tomcat 不同的 JRE 编译的。
在您的服务器上检查java -version
,然后使用相同的版本编译您的代码。
我遇到了错误,因为我的 Eclipse 标准 JRE 是 1.6,而 Tomcat 使用的是 1.5 - 这不起作用。
【讨论】:
【参考方案6】:在 CentOS 6 和 Solr 4.4.0 中
我必须编译一些 lib 文件才能解决此错误
cp ~/solr-4.4.0/example/lib/ext/* /usr/share/tomcat6/lib/
【讨论】:
这也解决了我的问题。 Ubuntu 14.04 和 solr 4.8.1 和 tomcat 7。【参考方案7】:通常在 localhost.[date].log 中有关于问题的信息。 但有时此日志中没有任何内容。如果项目的配置混乱,就会发生这种情况(几个开发人员在这个项目上工作了很长时间,每个人都添加了自己的东西)。 我在日志中没有任何信息的情况下遇到了这个问题。相当快速和稳健的方法:
尝试从 web.xml 中删除所有可能导致任何问题的内容。您甚至可以删除除标签之外的所有内容。如果应用程序仍然无法部署 - 继续。
从 WEB-INF/classes 中删除每个 *.xml 描述符。如果应用程序无法部署 - 继续。
删除您可以在战争中找到的所有日志记录配置(logging.properties、log4j.properties)。尝试部署。在这一步,我得到了更多信息错误,但部署仍然失败。
在谷歌搜索此错误后,我发现该项目包含旧版本的 xerces,它与 Tomcat 的版本(较新)发生冲突,并且没有部署应用程序。在 web 应用程序中升级 xerces 后一切都变得很好。
【讨论】:
【参考方案8】:为 Tomcat 设置 log4j 日志记录非常简单。以下引自http://tomcat.apache.org/tomcat-5.5-doc/logging.html:
使用以下内容创建一个名为 log4j.properties 的文件并将其保存到 common/classes 中。
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
下载 Log4J(v1.2 或更高版本)并将 log4j jar 放在 $CATALINA_HOME/common/lib 中。
下载 Commons Logging 并将 commons-logging-x.y.z.jar(不是 commons-logging-api-x.y.z.jar)与 log4j jar 一起放在 $CATALINA_HOME/common/lib 中。 启动 Tomcat您可能还想看看http://wiki.apache.org/tomcat/FAQ/Logging
【讨论】:
这会导致部署异常实际正确记录吗? 是的。我已经使用这种确切的方法在部署过程中找到了问题的原因。 对不起,日志文件无法通过 DEBUG 日志级别。它确实包含一些似乎与问题无关的异常——我怀疑在我的情况下这是一个 Struts 问题。【参考方案9】:如果有人遇到类似的错误 严重:错误 filterStart 2013 年 4 月 29 日下午 4:49:20 org.apache.catalina.core.StandardContext startInternal 严重:上下文 [/TraceMW] 由于以前的错误而启动失败
那么请检查你的tomcat/lib目录是否包含cors-filter-1.5.jar。 如果你有你会得到以上错误,你的应用程序将不可用。
所以,我只是设法从其他tomcat文件夹复制jar文件,后来我没有收到上述错误。
【讨论】:
【参考方案10】:我也遇到了同样的错误,并且在解决这个问题上付出了很多努力。花了一些时间在谷歌上搜索,找到了以下解决方案,我的问题得到了解决。
问题是由于部署路径中缺少 Struts2 库所致。大多数人可能会将库用于编译,并且往往忘记附加运行时所需的库。所以我在 web 部署程序集中添加了相同的库,问题就解决了。
【讨论】:
【参考方案11】:我遇到了同样的问题,一旦应用程序部署在 tomcat 中就无法启动。但是,一旦我将 Struts jar 集复制到 CATALINA_HOME\lib (Tomcat 目录)目录中,它就被解决了。您不需要在您的 WEB_INF\lib 中包含这些 jar,但您需要在您的构建路径中包含它们。
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
freemarker-2.3.16.jar
javassist-3.11.0.GA.jar
struts2-convention-plugin-2.2.1.jar
struts2-core-2.2.1.jar
xwork-core-2.2.1.jar
【讨论】:
【参考方案12】:在一个几乎相同的问题上花费了最后一个小时后,只是想做出贡献。我的解决方案是不知何故我们的应用程序 .jar 已损坏,因此从我们的开发服务器放置 jar 提供了修复。
【讨论】:
【参考方案13】:我遇到了类似的问题。雷纳托的小费对我有用。我使用了旧版本的 java 类文件(在 WEB-INF/classes 文件夹下),问题就消失了。所以,应该是编译器版本不匹配。
【讨论】:
【参考方案14】:这对我有用:只需删除所有库,然后编译并运行。它会提示他们在您的项目中确认错误。应用库后重新运行项目。
【讨论】:
【参考方案15】:一般Server JDK版本会低于部署的应用程序(用更高的jdk版本构建)
【讨论】:
【参考方案16】:运行以下命令以在终端上显示 catalina 日志---
sh start-camunda.sh; tail -f server/apache-tomcat-8.0.24/logs/catalina.out
【讨论】:
以上是关于Tomcat 启动日志 - 严重:错误 filterStart 如何获取堆栈跟踪?的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat遇到”Error listenerStart”或”Error filterStart”问题且无详细日志时的log配置.