加载中…
个人资料
null
null
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,914
  • 关注人气:27
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

logback/log4j日志打印不出来包冲突解决

(2016-09-11 22:37:08)
标签:

logback

log4j

分类: J2EE

问题描述

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


问题分析

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

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


解决方案

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

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

Java代码 
  1.   
  2.     
  3.     ch.qos.logback  
  4.     logback-classic  
  5.     
  6.   


http://s6/mw690/001Ehz5Tzy74LSYGMQdd5&690


主要是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。

0

阅读 收藏 喜欢 打印举报/Report
前一篇:时间表达式
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有