springboot启动突然中断,无任何报错信息
首先,我们要明白一个应用的启动突然中断一定是出现了错误或者被某代码终止了。
一、我们先说第一种,出现了错误。
首先,如果是出现了错误,可以肯定的是一定会抛出异常、打印日志。如果没打那只能说明一个问题,被try catch住了,且没有打印日志。
那异常被try catch了,还会影响启动吗?不会。
springboot有可能自己遇到了问题,不打印日志,直接中断吗?理论上会,但实际上不会。
由此推断,上述情况只能是被某代码终止了程序。
二、代码终止程序,且没有打印日志
确定了代码终止就好办了,已知springboot应用有两种被终止的方式:SpringApplication.exit()、System.exit()。
一个是springboot提供的方法、一个是JDK提供的方法。
于是,我们可以全局搜索这两行代码,再检查代码逻辑,看什么情况下会执行。
具体操作我这里就不展示了,idea、eclipse工具搜索方式也不一样,我说说我这边的具体情况。
我这边工程是用的System.exit(),如下图。
系统启动时,需要加载一个号段文件,没有就会打印错误日志,并停止应用。
那为什么日志没有打印出来呢?
因为log4j是异步线程打印的,System.exit()关闭时,日志可能还没打。
所以我们要让它缓缓,等一等log打印,比如加个sleep。
这样,日志就能打印出来了。
当然,你也可以直接使用SpringApplication.exit(),它不仅会等待logger打印完成,而且错误日志还更全。
创作不易,如果你学废了,还请点个赞哦!
为了维护抄袭成风的网络环境
严谨任何形式的转载