Java日志系统研究
日志,源于log,有航海日志的意思。指记录海员记录每天的行程,生活及发生的事件。在软件开发领域,用来监控代码中变量变化,跟踪代码运行的轨迹,在开发环境中担当调试器作用,向控制台或文件输出信息。
几乎所有的软件开发语言(平台)都有自己的日志系统,java,.net,ruby,php等。在java领域,存在大量的日志组件,open-open收录了21个日志组件。
从功能上讲,这些可以分为三类,一是日志工具类,它实现了日志的记录,格式化和级别的划分,代表为logback,simplelog。二是日志系统,提供了完整的框架功能并实现了日志记录。代表为jul(jdk提供的日志框架),log4j(apache开源项目)。三是抽象整合类,它提供了一组接口,完成日志功能,通过包装其他日志工具或系统来工作jcl(apache开源组件),slf4j。
从历史上讲,log4j出现最早,Ceki Gülcü是其创造者。自java1.4开始,jdk提供了java.util.logging类库,提供了一个完整的日志框架,在设计上要比log4j要更清晰。这个时候,除此之外,还有一些其他日志组件,java领域从来不缺少轮子,总是有人在发明轮子,轮子多了,就会产生混乱,就会有人站出来,要一统江湖,于是,jcl,apache一个开源的日志组件诞生了,它提供了一组日志系统的接口,通过对log4j,jul和simplelog进行包装,提供日志功能。这样,开发的时候,只需要使用jcl,通过配置,灵活选择底层实现。这样,对于开发人员来说,开发更简单了些。看起来一切太平了,可Ceki Gülcü认为,应该有一个更好的日志框架。log4j经过这么久的发展,已经成为了一个巨人,亦伤痕累累,从外面看,经典,庄重,强壮,从内部看,却有着一根根的飞线(ThinkPad),充满了代码的坏味道。或许他没有勇气来改造这个巨人,离开也许是最好的选择,于是,出来,创建了slf4j,来取代jcl,创建了logback,来取代log4j。目前,log4j和jul应用最为广泛,slf4j作为新兴的抽象层,整合logback,以其简洁,快速,正被越来越多的顶级项目使用。
代表日志组件简要介绍。
Log4j,历史悠久,应用广泛,被移植到多种语言及平台,功能强大,在众多的日志框架中,仍占据着主导地位。
Jul,jdk提供的日志框架,设计精良,和jdk紧密结合,控制灵活,使用简单。
Jcl,提供了日志的抽象层,可以整合多种实现。但有classloader问题。
Slf4j,提供了jcl的超集,避免了classloader问题。
Logback,可靠,通用,快速,灵活的java日志工具(官方描述)。
项目选择思考。
如果是单一的项目,如桌面应用,采用jul,免配置,控制灵活。
如果是web开发,宜采用log4j,因为系统已经有了很多的配置文件,不在乎多一个,而且log4j可以脱离任何组件,不像jul,和jvm紧密结合在一起。
如果是多项目整合开发,宜采用slf4j,一是它可以整合其他遗留日志组件,二是其提供的抽象层,为将来的开发提供了灵活性。
参考资料:
1.IBM developerworks对log4j的介绍。 链接
2.Java开源日志组件列表。链接
3.Slf4j官方网站。链接
4.Logback官方网站。链接
5.Log4j官方网站。链接
6.Jcl官方网站。链接
7.Sun官方网站。链接
8.一个jcl的中文说明。链接
分享到:
相关推荐
总的来说,这个Java日志分析工具提供了对日志数据进行处理和分析的功能,通过阅读源代码,开发者可以学习到Java日志处理的最佳实践,以及如何构建此类工具。同时,对于需要排查问题或监控系统运行状态的用户,这个...
比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j”框架功能更强大,想切换到“sf4j”。常规的做法是,修改项目中每一处调用到“log4j”相关模块的代码。如果是项目比较大,所要花费的工作量...
【Java语言编写研究生管理系统】是一个综合性的应用项目,它涵盖了数据管理、统计分析以及软件开发等多个方面的技术。在这个系统中,Java语言作为主要的开发工具,利用其强大的面向对象特性和丰富的类库,实现了对...
通过研究和学习这个源代码,开发者可以深入理解如何用Java构建一个功能完备的BBS系统。 在Java BBS系统中,我们可以期待看到以下几个关键知识点: 1. **MVC设计模式**:大部分Web应用都采用Model-View-Controller...
Java网络通信系统的研究与开发是IT领域中的一个重要课题,它涉及到多方面的技术,包括网络编程、并发处理、数据传输以及服务器架构等。本项目提供的源代码和论文详细阐述了如何利用Java实现一个高效的网络通信系统。...
标题中的“JAVA编写的预警系统”表明我们讨论的是一个使用Java编程语言...通过深入研究这个JAVA编写的预警系统,开发者不仅可以提升Java编程技能,还能学习到系统设计和监控实践,为自己的项目或职业发展积累宝贵经验。
【Java图书管理系统源代码】是基于Java编程语言开发的一个实用型软件系统,主要目标是实现对图书馆内各类图书资源的有效管理。...通过学习和研究这个系统,开发者可以深入理解Java开发流程,提升自己的技能。
《Java地铁计费系统源码解析》 在IT行业中,软件开发是一项至关重要的工作,而学习和理解已有的源码是提升技术能力的有效途径。...通过对这个项目的深入研究,开发者可以进一步提升自己的Java编程技巧和系统设计能力。
【FastreSolve日志分析系统源代码】是一款专门用于...通过深入研究FastreSolve日志分析系统的源代码,开发者可以学习到如何构建高效、灵活的日志分析解决方案,这对于提升运维自动化水平和企业数字化转型具有重要价值。
8. **日志管理**:使用Log4j或Logback记录系统运行日志,方便排查问题和性能分析。 9. **部署与运维**:系统可能部署在Tomcat或Jetty等应用服务器上,使用Docker进行容器化部署,提高部署效率和资源利用率。 10. *...
在本项目中,我们探讨的是一个使用Java编程语言编写的门禁系统源码。Java是一种广泛使用的、跨平台的编程语言,其面向对象的特性、丰富的类库以及良好的安全性使其成为开发此类系统的理想选择。 首先,我们要理解...
Java学生成绩管理系统是一款基于Java技术开发的软件应用,它主要用于高校或教育机构对学生学习成绩进行管理、统计...通过深入研究和修改这个系统,开发者可以提升其Java编程技能,了解并掌握实际项目开发的流程和规范。
在探讨基于Oracle数据库与JAVA语言的财务系统设计时,首先需要明确的是,财务系统是企业管理的重要组成部分,对于提升企业的财务管理效率和水平具有关键作用。本文将基于J2EE平台,利用Oracle数据库和JAVA语言设计一...
9. **错误处理与日志记录**:系统应具备完善的错误处理机制,捕获并记录异常信息,帮助开发者定位问题,同时日志记录也有助于系统维护和性能优化。 10. **测试**:为了保证系统的可靠性和稳定性,需要进行单元测试...
【Java+MySQL 机票预订系统】是一个典型的基于Java编程语言和MySQL数据库的项目,它主要用于模拟实际生活中的机票购买流程,适用于学生进行期末数据库课程设计。这个系统包含了完整的源码,确保可以完美运行,并且...
10. **日志与监控**:Log4j、SLF4J和Java的logging API用于记录系统运行日志,而像JMX或Prometheus可能用于系统监控。 通过上述分析,我们可以看出,这个DRP分销系统的源码涵盖了Java开发的多个关键方面,是理解...
《Java项目:员工工作日志管理系统》 在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用开发中占据主导地位。本项目——“员工工作日志管理系统”就是一个典型的Java项目实例,它旨在帮助企业管理员工的...
这个压缩包很可能是一个教学或实践项目,提供了完整的源代码和相关文档,帮助学习者理解并研究如何构建一个基于Java的智能系统。 在Java智能系统开发中,通常会涉及以下几个重要的知识点: 1. **系统框架选择**:...
通过深入研究这些文件,开发者可以学习到如何将Java后端与Bootstrap和jQuery前端相结合,构建一个完整的Web应用程序。此外,这也为有经验的开发者提供了一个实际案例,以便他们了解如何在实际项目中应用上述设计模式...
本资源是一个基于Java实现的推荐系统源码,适合对推荐算法和Java编程有兴趣的学习者进行研究和实践。 首先,源码中的`ANNOUNCEMENT`文件通常包含项目公告或发布说明,可能会提供项目的最新更新、目标和开发者的信息...