tomcat启动失败,catalina.out找不到具体出错代码,localhost.yyyy-MM-dd.log发挥奇效

一个跑了很久的项目在测试环境能够正常启动,在一次更新的时候,到了预生产的时候,报错如下:

2020-07-14 15:33:19.222 [localhost-startStop-1] WARN org.springframework.web.context.support.XmlWebApplicationContext - Exception thrown from ApplicationListener handling ContextClosedEvent
java.lang.NullPointerException
        at java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:333) ~[?:1.7.0_80]
        at java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:1175) ~[?:1.7.0_80]
        at org.apache.cxf.transport.http.DestinationRegistryImpl.removeDestination(DestinationRegistryImpl.java:62) ~[cxf-rt-transports-http-2.7.12.jar:2.7.12]
        at org.apache.cxf.transport.http.AbstractHTTPDestination.deactivate(AbstractHTTPDestination.java:898) ~[cxf-rt-transports-http-2.7.12.jar:2.7.12]
        at org.apache.cxf.transport.AbstractObservable.setMessageObserver(AbstractObservable.java:58) ~[cxf-api-2.7.12.jar:2.7.12]
        at org.apache.cxf.endpoint.ServerImpl.stop(ServerImpl.java:166) ~[cxf-api-2.7.12.jar:2.7.12]
        at org.apache.cxf.endpoint.ServerImpl.destroy(ServerImpl.java:171) ~[cxf-api-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.managers.ServerRegistryImpl.preShutdown(ServerRegistryImpl.java:90) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.managers.CXFBusLifeCycleManager.preShutdown(CXFBusLifeCycleManager.java:95) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.CXFBusImpl.shutdown(CXFBusImpl.java:249) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.CXFBusImpl.shutdown(CXFBusImpl.java:236) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.spring.SpringBus.onApplicationEvent(SpringBus.java:114) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.apache.cxf.bus.spring.SpringBus$1.onApplicationEvent(SpringBus.java:63) ~[cxf-rt-core-2.7.12.jar:2.7.12]
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:97) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) ~[spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1030) [spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:993) [spring-context-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:548) [spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) [spring-web-3.1.2.RELEASE.jar:3.1.2.RELEASE]
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5244) [catalina.jar:7.0.94]
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5933) [catalina.jar:7.0.94]
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:221) [catalina.jar:7.0.94]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149) [catalina.jar:7.0.94]
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018) [catalina.jar:7.0.94]
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994) [catalina.jar:7.0.94]
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) [catalina.jar:7.0.94]
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127) [catalina.jar:7.0.94]
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020) [catalina.jar:7.0.94]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_80]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_80]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_80]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_80]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_80]

 

从上述日志里,没有找到具体出错的代码。把预生产的war包拉到测试环境可以运行,怀疑是预生产的环境问题,就在找运维申请重装一下tomcat的时候,突发奇想清楚掉所有日志,然后 ./startup.sh 一下,此时logs目录出现了以下文件:

-rw-r--r-- 1 root root 102936 Jul 14 15:37 catalina.2020-07-14.log
-rw-r--r-- 1 root root 566370 Jul 14 15:53 catalina.out
-rw-r--r-- 1 root root   3272 Jul 14 15:37 gc.log
-rw-r--r-- 1 root root      0 Jul 14 15:33 host-manager.2020-07-14.log
-rw-r--r-- 1 root root   2694 Jul 14 15:37 localhost.2020-07-14.log
-rw-r--r-- 1 root root      0 Jul 14 15:33 manager.2020-07-14.log
-rw-r--r-- 1 root root      0 Jul 14 15:33 tomcat_access_log.2020-07-14.txt

 

在上图中,发现了一个localhost.2020-07-14.log文件不为空,打开一下,出现了以下日志:

Jul 14, 2020 3:33:06 PM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Jul 14, 2020 3:33:08 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jul 14, 2020 3:33:19 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.test.common.listener.WebContextListener
java.lang.ExceptionInInitializerError
        at com.test.web.service.SecRaffleService.initForBooking(SecRaffleService.java:140)
        at com.test.web.service.SecRaffleService.initConf(SecRaffleService.java:121)
        at com.test.web.service.SysConfigInfo.initialize(SysConfigInfo.java:43)
        at com.略.common.listener.WebContextListener.contextInitialized(WebContextListener.java:59)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5197)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5720)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Integer.parseInt(Integer.java:504)
        at java.lang.Integer.parseInt(Integer.java:527)
        at com.test.common.constant.CommonConstant.<clinit>(CommonConstant.java:334)
        ... 17 more

Jul 14, 2020 3:33:19 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Jul 14, 2020 3:36:58 PM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Jul 14, 2020 3:37:00 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Jul 14, 2020 3:37:12 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'springServlet'

发现了具体出错代码在

at com.test.common.constant.CommonConstant.<clinit>(CommonConstant.java:334)

该代码是给一个常量赋值,如下

 public static final Integer APP_SPREAD_SCAN_COUPON = Integer.parseInt(Configure.values("APP_SPREAD_SCAN_COUPON"));

经过排查是配置里忘记给APP_SPREAD_SCAN_COUPON添加值了,导致系统初始化时报错,搞好配置文件就ok了。

 

那么localhost.yyyy-MM-dd.log文件是什么作用呢?百度它。

百度: localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志,它也是包含tomcat的启动和暂停时的运行日志,但它没有catalina.2018-09-19.log 日志全。它只是记录了部分日志。

logs下的其他日志见此链接:https://www.cnblogs.com/operationhome/p/9680040.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值