日志框架冲突问题

小凯   |     |   问题   |   2分钟   |   137浏览  
今天在部署项目到服务器时,发生了这样的错误。先是像往常一样把项目打成war包,然后修改war包名称为ROOT.war,再把war包部署至tomcat上面。

一般来说照这样项目就正常的更新部署了。但是今天遇到了一个问题,部署后访问任何资源都是404.我于是把war包放在本地tomcat运行看看,结果能正常运行。百思不得其解。然后就是看tomcat日志catalina.2023-07-03.txt , 发现报错

Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/usr/local/tomcat/apache-tomcat-8.5.83/webapps/ROOT/WEB-INF/lib/slf4j-log4j12-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.impl.Log4jLoggerFactory-

什么原因呢?查阅相关资料后发现,原来是slf4j日志接口框架报错,具体原因是日志实现框架冲突了,我这里是logback和log4j发生冲突。—-
那为什么会本地能运行,服务器不能运行呢。暂时不清楚,我检查了war包中的依赖,发现在/WEB-INFO/lib目录下果然存在logback和log4j的jar包。于是我删除了其中一个log4j。重新得到war包。重新部署,成功运行!

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  条评论