`
nuistcc
  • 浏览: 82583 次
社区版块
存档分类
最新评论

logback日志打印不出来包冲突解决方案

阅读更多

问题描述

在web应用开发过程中发现部署在服务器中的应用日志突然不见了,服务器中只有tomcat或jboss的重启启动日志在打印,但应用本身设置的日志文件没有打印出来。

问题分析

该应用分支是刚从主干check下来的,而且主干分支在服务器上部署后是正常的,所有日志文件及文件内的日志信息都能正常打印和显示。

根据之前经验判断由于应用部署是成功的,并且提交的新代码中只是在maven工程的pom文件中引入了新的依赖包,初步怀疑是由于新引入的包导致logback包冲突引起的。

解决方案

通过mvn dependency命令打出来该maven工程的依赖数,果然出现了两个不同版本的logback引用情况。

使用exclusion命令对低版本的logback包进行排除操作,参考示例如下:

 

<exclusions>
  <exclusion>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
  </exclusion>
</exclusions>

 主要是logback-classic的包冲突引起的,经过唯一版本确认后重新部署应用,日志顺利打印出来。

问题总结

一开始以为是log4j的包冲突引起的,后来排查结果却是logback包问题,之前对这两两者区别不是很了解,经过这次问题排查也顺便学习了一下这方面的知识:

logback介绍

LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。其中

logback-core提供了LogBack的核心功能,是另外两个组件的基础;

logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath;

logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。

由于logback在技术实现及性能上具有无可比拟的优势,现在一般都是使用logback,慢慢替代log4j。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics