暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

tomcat应用服务启不来,没有报错日志?不可能!

搬运工来架构 2021-05-26
2003












遇到了一个奇怪的问题,使用tomcat启动项目,从标准输出日志看,似乎很正常,但是访问却失败了!


如下图:


......(省略N多日志)

Jun 04, 2018 12:42:27 PM org.apache.catalina.startup.HostConfig deployWAR

INFO: Deployment of web application archive usr/local/tomcat/xxxxx/webapps/XXXX-api.war has finished in 13,552 msJun 04, 2018 12:42:27 PM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["http-bio-9311"]Jun 04, 2018 12:42:27 PM org.apache.coyote.AbstractProtocol startINFO: Starting ProtocolHandler ["ajp-bio-9312"]Jun 04, 2018 12:42:27 PM org.apache.catalina.startup.Catalina startINFO: Server startup in 29408 ms


Tomcat catalina日志看下起来似乎正常,启动耗时约22秒,因为这里好像没看到异常堆栈等信息的打印出来。所以理所应当的认为我的服务已经正常启动了,是不是其它网络情况造成服务不可用或者404跳转等问题呢?


但是,访问时服务却是一直不通,甚至出现404。


1、查看catalina日志



细看关键日志:

SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log fileJun 04, 2018 12:32:47 PM org.apache.catalina.core.StandardContext startInternalSEVERE: Context [/XXXX-api] startup failed due to previous errors


关键就是这两行severe严重级别的日志。在控制台看到的都是没标颜色的,所以一开始可能觉得没问题(...)。


这两行日志我们可以看出来,有Listener启动失败了,在适当的容器日志文件中可以找到完整的详细信息。而且也可以看到由于前面的这些错误,启动是失败的



2、异常日志在哪里?

那么在Catalina日志里面为啥没能看到异常堆栈呢?


看下面这段引用:

catalina.out即标准输出和标准出错,所有输出到这两个位置的都会进入catalina.out,这里包含tomcat运行自己输出的日志以及应用里向console输出的日志。catalina.{yyyy-MM-dd}.log是tomcat自己运行的一些日志,这些日志还会输出到catalina.out,但是应用向console输出的日志不会输出到catalina.{yyyy-MM-dd}.log。localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志,而这些未处理异常最终会导致应用无法启动。

  

 所以,你就知道什么原因了吧。


localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常,最终被tomcat捕获而输出的日志。


根据Catalina日志上的severe日志所说的,有listener启动失败,那么详细的日志信息就是在这个日志文件里面了:localhost.log

 


从日志得知:

  SEVERE: Exception sending context initialized event to listener instance of class com.XXXXXX.web.servlet.WsContextLoaderListener


看到这串异常堆栈信息,是不是很兴奋!  这样你就会知道什么原因了吧。赶紧解决掉~


3、总结

1)应用服务启不来,比如:tomcat容器部署的服务,甚至其他服务组件等,一般都会有日志提示你,所以要细心和耐心,可能就记录在其它地方了。


2)Tomcat部署项目时应用初始化(listener, filter, servlet)出现异常一般都会记录到这个日志localhost.log。

2018记


ps:虽然是一个小问题,但是在工作中却经常遇到,也有不少同事不知道怎么回事,特此记录,让我们少掉进一些坑。




回复公众号【资料】获得干货资料集锦:技术ppt、IT大会资料、架构、分布式资料等。
相关文章
1】线上热更新代码只需3步 Arthas实战 | 原创
2】实战使用Arthas排查生产问题:实例方法接口调用
3】实战:一次疑似内存泄漏的问题排查
推荐好文
1、互联网Code Review最佳实践分享
2、dubbo面试题!会这些,说明你看懂了dubbo源码
3、Kafka面试题!掌握它才说明你真正懂Kafka
4、
Netty 5.0为啥被舍弃?原因竟然是...
5、
中台之上——业务架构系列【汇总】
6、必备瑞士军刀IDEA插件,你使用了哪些
7、线上热更新代码只需3步 Arthas实战
8、Eureka源码剖析之七:架构&面试题【总结】
9、互联网工程师应该用这种姿势打印日志

-关注搬运工来架构,与优秀的你一同进步-

如果喜欢这篇文章可以点在看哦↘

文章转载自搬运工来架构,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论