问题描述
在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。
相关推荐
JAVA日志框架适配-冲突解决方案 本文将对JAVA日志框架适配中可能出现的冲突进行分析和解决,涵盖日志框架的基本概念、常见的冲突原因和解决方案。 日志框架的基本概念: 在JAVA中,日志框架可以分为两种:日志...
这个框架旨在提供高效、灵活的日志记录解决方案,并且是为了解决 Log4j 的一些局限性而设计的。在本压缩包中,包含了 logback 的核心组件(logback-core)、经典组件(logback-classic)以及 Simple Logging Facade ...
8. **依赖冲突**:检查是否存在其他日志框架(如Logback、java.util.logging)与Log4j之间的依赖冲突。这种情况下,日志可能会被其他框架接管。 9. **版本兼容性**:确认使用的Log4j版本与项目的其他组件兼容。有时...
总结来说,SLF4J+Logback是现代Java项目中的首选日志解决方案,因为它们提供了一种灵活、高性能的日志记录机制。然而,理解不同日志框架之间的差异和应用场景,可以帮助开发者根据项目需求做出最佳选择。在实际工作...
2. `logback-classic.jar`:Logback是SLF4J的一个推荐实现,提供了高效且功能丰富的日志解决方案。`logback-classic`依赖于`logback-core`,并实现了SLF4J API,使得可以使用SLF4J进行日志记录。 3. `logback-core....
SLF4J(Simple Logging Facade for ...总的来说,SLF4J提供了一种灵活的日志解决方案,使得开发人员能够在不修改代码的情况下切换不同的日志框架。通过理解这些jar包的作用,我们可以更好地管理和优化项目的日志系统。
总的来说,SLF4J作为日志门面,为Java应用提供了一种灵活、可扩展的日志解决方案。通过使用SLF4J,开发者可以专注于编写日志代码,而无需关心底层的日志实现,从而提高了代码的可维护性和项目的灵活性。在实际项目中...
3. ELK Stack(Elasticsearch, Logstash, Kibana):一套强大的日志收集、分析和展示解决方案。 七、日志清理策略 1. 定期归档:将旧日志移动到其他位置,防止日志文件过大。 2. 限制大小:设置日志文件的最大大小...
SLF4J(Simple Logging Facade for Java)是Java中一个重要的日志抽象层,它为各种日志框架提供了一个统一的接口,如...在实际项目中,结合合适的日志实现(如Logback),SLF4J能够提供高效、灵活的日志记录解决方案。
8. **logback-classic.jar** 和 **logback-core.jar**:这两个是Logback日志系统的组成部分,Logback是SLF4J的推荐实现,由SLF4J的创建者Ceki Gülcü设计,提供了高效且灵活的日志记录。 使用SLF4J时,需要在项目...
这个接口层的设计使得SLF4J成为了一个非常灵活的日志解决方案。 在描述中提到了几个具体的SLF4J相关的jar包,它们分别是: 1. **slf4j-api-1.5.8.jar**:这是SLF4J的核心API,包含了所有的接口和抽象类,如`org....
2. **避免日志框架冲突**:由于SLF4J是一个桥接API,确保你的类路径中没有其他日志框架的直接引用,以防止日志冲突和错误。 3. **配置**:每个绑定实现都有自己的配置方式。例如,Logback可以通过`logback.xml`文件...
总之,SLF4J提供了一种灵活、模块化的日志解决方案,允许开发者专注于应用逻辑,而不是日志实现的细节。1.6.4版是一个稳定版本,适合大多数项目使用。通过理解SLF4J的工作原理和用法,开发者可以更有效地管理和控制...
然后,Log4j2是Apache Log4j项目的最新版本,它提供了一套高效、灵活的日志记录解决方案。Log4j2相比Log4j 1.x有许多改进,包括性能提升、更丰富的配置选项、异步日志记录支持以及动态日志配置等。 在Tomcat 9中...
SLF4J是一个非常灵活的日志解决方案,它提高了代码的可移植性和可维护性。了解并正确使用SLF4J可以极大地提升项目的日志管理能力,方便在开发、测试和生产环境中进行调试和监控。在使用过程中,遇到问题时,查看官方...
由于不同的应用程序可能需要使用不同的日志实现, Commons Logging 提供了一种灵活的解决方案,允许开发者在不修改代码的情况下切换日志实现。 **Commons Logging的工作原理:** Commons Logging 通过查找类路径上...
SLF4J的设计理念是提供一种灵活的日志解决方案,允许开发者在不修改代码的情况下更换日志框架。这对于大型项目或跨团队合作的项目来说,是一个巨大的优势,因为不同的团队可能偏爱不同的日志实现。 SLF4J的主要组件...
1. **依赖冲突**:确保你的项目中没有引入了其他日志框架的jar包,如logback或log4j1.x,这可能导致SLF4J找不到正确的绑定实现。 2. **配置文件缺失或错误**:`log4j2.xml`是Log4j2的主要配置文件,定义了日志的...
SLF4J的设计目标是为了提供一个灵活的日志解决方案,使得开发人员可以在部署应用程序时选择合适的日志框架,而无需修改代码。通过SLF4J,你可以编写不依赖特定日志实现的代码,这样可以方便地在不同环境中切换日志...