tomcat 日志log4j,slf4j,logback冲突

简介:




问题描述:

        启动tomcat,发现tomcat无法启动,catalina.out有如下错误日志:

INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log Closing Spring root WebApplicationContext

 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStop Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener

 java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

        at org.apache.log4j.LogManager.getLogger(LogManager.java:44)

        at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)

        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)

        at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:156)

        at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132)

        at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:274)

        at org.springframework.web.context.ContextCleanupListener.<clinit>(ContextCleanupListener.java:43)

        at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:145)

        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4860)

        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5495)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)

        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)

        at java.util.concurrent.FutureTask.run(FutureTask.java:266)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

        at java.lang.Thread.run(Thread.java:745)

 

 问题分析:

    检查lib库下面,发现今天更新过log4j和logback组合,总共有如下包:

 


slf4j-api-1.7.5.jar

slf4j-log4j12-1.6.1.jar

log4j-1.2.16.jar

log4j-over-slf4j-1.7.5.jar

logback-core-1.1.2.jar

logback-classic-1.1.2.jar

    通过查询资料发现,slf4j-log4j12-1.6.1.jar  和log4j有冲突。


 

解决方法:

      删除后正常,删除这个:slf4j-log4j12-1.6.1.jar  


附件常见组合:

log4j+slf4j

slf4j-api-1.7.5.jar

slf4j-log4j12-1.6.1.jar

log4j-1.2.16.jar



slf4j+logback

logback-core-1.1.2.jar

logback-classic-1.1.2.jar

slf4j-api-1.7.5.jar




参考资料:

http://logback.qos.ch/documentation.html

http://logging.apache.org/log4j/1.2/

http://www.slf4j.org/



本文转自 woshiwei201 51CTO博客,原文链接:http://blog.51cto.com/chenwei/1825820


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4天前
|
C++
JNI Log 日志输出
JNI Log 日志输出
12 1
|
4天前
|
存储 运维 大数据
聊聊日志硬扫描,阿里 Log Scan 的设计与实践
泛日志(Log/Trace/Metric)是大数据的重要组成,伴随着每一年业务峰值的新脉冲,日志数据量在快速增长。同时,业务数字化运营、软件可观测性等浪潮又在对日志的存储、计算提出更高的要求。
|
11天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
11天前
|
运维 监控 Go
Golang深入浅出之-Go语言中的日志记录:log与logrus库
【4月更文挑战第27天】本文比较了Go语言中标准库`log`与第三方库`logrus`的日志功能。`log`简单但不支持日志级别配置和多样化格式,而`logrus`提供更丰富的功能,如日志级别控制、自定义格式和钩子。文章指出了使用`logrus`时可能遇到的问题,如全局logger滥用、日志级别设置不当和过度依赖字段,并给出了避免错误的建议,强调理解日志级别、合理利用结构化日志、模块化日志管理和定期审查日志配置的重要性。通过这些实践,开发者能提高应用监控和故障排查能力。
87 1
|
12天前
|
弹性计算 运维 Shell
|
17天前
|
运维 监控 前端开发
[SpringAop + Logback +MDC] 现网必备全链路日志追踪
[SpringAop + Logback +MDC] 现网必备全链路日志追踪
|
18天前
|
Java 应用服务中间件
解决IDEA tomcat控制台只有server日志
请注意,确保在调试或开发阶段使用更详细的日志级别(如 `DEBUG`或 `TRACE`),但在生产环境中应将其设置为更高的级别以减少日志量。
15 0
|
19天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
90 0
|
22天前
|
SQL 存储 监控
SLS 查询新范式:使用 SPL 对日志进行交互式探索
像 Unix 命令一样支持多级管道级联,像加工预览一样实时处理查询结果,更便捷的交互,更丰富的算子,更灵活的探索半结构化日志,快来试试使用 SPL 语言查询日志数据吧~
46299 3
|
23天前
|
Apache
web服务器(Apache)访问日志(access_log)详细解释
web服务器(Apache)访问日志(access_log)详细解释