记录一次logback与log4j冲突tomcat启动不了的问题

今天liunx上面启动tomcat的时候报如下错误
SEVERE: Failed to load class com.mysql.jdbc.NonRegisteringDriver during Tomcat start to prevent possible memory leaks.
java.lang.ClassNotFoundException: com.mysql.jdbc.NonRegisteringDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
在查询了catalina.out里面,也只有报这个错误的信息,也没有其他错误的信息.
百度了一遍,始终还是没有找到相关解决的问题,说实在话排查问题最怕的就是什么错误信息都没有,再找问题。
在查询了
https://stackoverflow.com/questions/24850091/the-web-application-registered-the-jdbc-driver-com-mysql-jdbc-driver-but-fa
帖子后

image.png

查询到自己的server.xml里面有也有添加相关的配置(相关配置是从其他应用配置复制过来修改过端口号的),具体这个配置的作用还不是很清楚,貌似也没有解决这个问题。排查问题总是痛苦了,仔细的检查了相关的配置也没有问题。后面直接向server.xml里面的classesToInitialize="com.mysql.jdbc.NonRegisteringDriver" 这个配置项删除了。在重启启动,居然没有再报相关错误,惊喜的时候,发起自己的应用还是没有启动起来。在catalina.out里面只有具体的错误日志,只提示监听启动EROR错误,
org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/******] startup failed due to previous errors
又陷入了问题当中。在相关同事的建议下,最好是打开应用的debug模式,启动下查看具体报错的问题。
百度到https://blog.csdn.net/wsm0712syb/article/details/50946409这个文章
在WEB-INF/classes目录下新建一个文件叫logging.properties,内容如下

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler  

org.apache.juli.FileHandler.level = FINE  
org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
org.apache.juli.FileHandler.prefix = error-debug.   

java.util.logging.ConsoleHandler.level = FINE  
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter 

配置好后,重启启动下tomcat,查询日志,终于看到了错误信息,真是不容易呀


image.png

总错误信息cannot be cast to ch.qos.logback.classic.LoggerContext
分析应该是logback与log4j的包有冲突造成的,于是在应用的lib目录下查询果然有log4j的包,找到了具体的原因,就是需要解决包冲突的问题,将相关问题反馈给同事后解决,重新打包后,再次启动,久违的成功日志终于出现了,真是不容易呀。
总结经验
1.从提示的信息入手,查询检查相关的配置,避免copy的时候,忘记修改某些参数引起异常
2.在开发测试阶段一定要把debug模式打开

你可能感兴趣的:(记录一次logback与log4j冲突tomcat启动不了的问题)