SpringCloud启动异常Stopping service [Tomcat]
2021-01-06 21:29
标签:error 服务器 读取 catalina mysql tap 图片 配置文件 jenkins 问题场景: 新公司的项目有3套服务器环境,SpringCloud框架,之前项目都是打包后手动传到服务器运行jar命令启动,随着微服务越来越多,决定用jenkins实现自动化部署,搭建一套Jenkins,并先把dev服务器的所有项目实现Jenkins自动化部署。这个任务交给我执行,搭建jenkins过程都很顺利,编写shell脚本耗时1天也完成。在配置项目时遇到很多问题。主要问题是由于dev服务器上的配置太老,更新不及时,大部分同事已经习惯于把新代码发到test,uat环境执行了。 我把所有项目配置上,但至少一半构建失败,异常信息:[main] INFO o.a.catalina.core.StandardService -Stopping service [Tomcat] 启动日志的最后一行就是这个,没有任何有用的信息,找了很多资料,耽误了2天时间终于解决了。 解决思路:首先要明确一点,既然是Tomcat自动停止了,肯定是有代码报错,只是你的项目没有打印错误日志。 解决办法: 1. 给启动类加上try..catch...并打印catch的信息。 2. 由于Tomcat的默认日志工具和SpringCloud的默认日志工具是不一样的:Tomcat使用的是log4j;SpringBoot使用的是Logback。 我配置的也是Logback,所以只能输出logback日志,而tomcat的log4j的日志并没有输出。这种情况我们采用Slf4j,Slf4j并不是日志输出工具,他的作用是日志继承接口,用于整合不同的日志工具。 这个依赖可以将log4j输出到slf4j,从而用sl4j输出。 经过这两个配置就可以看到错误日志了。 我的错误信息是: java.lang.IllegalArgumentException: Could not resolve placeholder ‘kafka.ip‘ in value "${kafka.ip}" 配置文件都放在Spring Cloud Config里,我用idea本地使用dev服务器的配置是可以正常启动的。再检查服务器里的配置文件,发现config的文件是读取本地的, 并不是实时从git上来取,如下图: 在服务器上每个项目目录有一个config文件夹,config文件夹有配置:application.properties bootstrap.properties logback-spring.xml SpringCloud的jar启动原则,如果本地有config和lib文件夹,是不会读取jar包里面的config和lib的。我的问题在于bootstrap.properties不是最新的,重新传一份再执行java命令,启动成功。 SpringCloud启动异常Stopping service [Tomcat] 标签:error 服务器 读取 catalina mysql tap 图片 配置文件 jenkins 原文地址:https://www.cnblogs.com/huanshilang/p/12975009.html@SpringBootApplication
public class Application {
static Logger logger = LoggerFactory.getLogger(Application .class);
public static void main(String[] args) {
try {
SpringApplication.run(Application .class, args);
logger.info("启动成功!");
} catch (Exception e) {
logger.error("启动异常", e);
}
}
}
dependency>
groupId>org.slf4jgroupId>
artifactId>jcl-over-slf4jartifactId>
dependency>
config-common.properties
config-log.properties
config-mongodb.properties
config-mysql.properties
........
上一篇:JS数组练习
文章标题:SpringCloud启动异常Stopping service [Tomcat]
文章链接:http://soscw.com/essay/40560.html