Java程序目前最常使用的日志框架有JCL(Jakarta Commons-Logging)和SLF4J(Simple Logging Facade for Java),而我们技术框架中的Spring、Struts使用JCL,而Hibernate使用SLF4j。目前广泛使用的Java日志门面库。通过动态查找的机制,在程序运行时自动找出真正使用的日志库。而SLF4j类似于Apache Common-Logging,但它在编译时静态绑定真正的Log库。还有一种是JDK提供的JUL(java.util.logging),因应用不成功,不做介绍。
日志框架的目的是为“所有的Java日志实现”提供一个统一的接口,所以需要由日志实现提供具体的日志功能。目前常用的两种日志实现是Log4j和Logback。Log4j是当前使用最多的日志实现,但Logback作为一个通用可靠、快速灵活的日志框架,将作为Log4j的替代,并且它们均出自同一团队的开源项目。
在上面的框架和实现组合中,JCL+Log4j、SLF4j+Logback作为常用的完整日志系统实现组合。JCL的的日志也可以转向SLF4j,使用的是jcl-over-slf4j插件;而SLF4j也可以选择Log4j作为实现,使用的是slf4j-log4j插件。一个形象化描述常用日志框架和实现的关系如下图所示:
我们系统选择的日志完整实现方案为:SLF4J+Logback,另外考虑到Spring等其他基础框架采用了JCL,我们采用jcl-over-slf4j进行请求转换。jcl-over-slf4j提供了Commons-Logging接口,在程序中我们使用common-loggin的接口,但底层是由SLF4J选择Logback作为日志实现。
选择理由:
日志组合 |
JCL+Log4j |
SLF4J+Logback |
优点 |
l使用的成熟 l案例丰富 |
l越来越多选择其作为日志方案,如Hibernate、iBatis l日志性能高,支持参数化的log字符串,避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug(“current user is: {}”, user)。 |
缺点 |
l不再被维护 l不适用OSGi开发 l日志记录性能不高 |
lLogback作为Log4j的继任者 lLogback兼容Log4j,但提供更多的扩展 |
就性能这一项,经过测试,在相同配置下,在连续输出100万条日志记录的条件,它们的生成日志文件和所花费时间比较如下:
日志组合 |
JCL+Log4j |
SLF4J+Logback |
文件大小 |
74M |
70M |
花费时间 |
52秒 |
37秒 |
相关推荐
JAVA日志框架适配-冲突解决方案 本文将对JAVA日志框架适配中可能出现的冲突进行分析和解决,涵盖日志框架的基本概念、常见的冲突原因和解决方案。 日志框架的基本概念: 在JAVA中,日志框架可以分为两种:日志...
Java日志框架是Java开发中不可或缺的部分,它们用于记录应用程序的运行信息,帮助开发者追踪错误、调试代码以及进行性能分析。Log4j和Logback是其中最常用的两个框架,它们都由Ceki Gülcü创建,并且在设计上有着...
Java日志框架是Java开发中不可或缺的...综上所述,Java日志框架的整合涉及到选择合适的框架、配置文件的设定、日志的管理与分析等多个方面。理解并熟练运用这些知识点,能够帮助开发者构建高效、易维护的系统日志机制。
一种Java日志系统框架的设计与实现( 一种Java日志系统框架的设计与实现( 一种Java日志系统框架的设计与实现( 一种Java日志系统框架的设计与实现
自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。 这个举例说明一下: 比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j...
总之,"采用JDK实现的日志框架"是一个基于标准Java日志API构建的系统,它可以满足基本的日志需求。然而,为了实现更复杂的功能和优化性能,开发者可能需要探索和扩展这个框架,或者转向其他更强大的第三方日志解决...
一种Java日志系统框架的设计与实现(转)
一个简单的日志框架,很早写的,五一闲了两天,修一修注释一下拿出来共享。。。。。。 注意: 该日志框架五脏不全。。。。。 改进意见: 1.可以在配置文件中添加日志输出格式,然后在代码中读取该格式用以控制输出...
【Java日志系统框架设计与实现】 Java日志系统框架是开发者用来跟踪、调试和记录程序运行状态的重要工具。在Java领域,有多种日志组件可供选择,如Log4J、JDK1.4 Logging Framework和Commons Logging Framework。...
Java日志框架SL4J(Simple Logging Facade for Java)是一个接口层,它为各种Java日志库提供了一个统一的API。这个框架允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Logback或Java内置的日志系统。...
该项目为Java日志框架学习而设计,包含43个文件,涵盖24个Java源文件、13个XML配置文件、4个属性文件、2个YAML配置文件,旨在通过实践加深对Java日志系统的理解。
另一个方法是通过日志框架(如Log4j或SLF4J)设置过滤器,匹配并替换特定的敏感关键字。但这可能会导致性能下降,因为每个日志输出都要进行正则匹配。 为了克服上述两种方法的局限,可以采取一种混合策略,即在...
Java日志框架详解.ppt
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它的主要目的是为各种日志实现提供一个统一的接口。这使得开发者能够在不修改代码的情况下,自由地选择日志实现,如Log4J、Logback或Java内置...
Java中的日志框架提供了多种日志记录的解决方案,从Java标准库中的JUL到Apache Commons Logging和SLF4J这样的日志门面,再到Log4j和Logback这样的具体实现。选择合适的日志框架可以提高程序的性能,增强代码的可读性...
总的来说,Java版QQ空间日志系统利用Structs框架,通过MVC架构实现了日志的发布、查看和评论功能。项目中涉及了数据库操作、前端模板渲染、用户认证等多个方面,体现了Java Web开发的综合能力。开发者需要具备扎实的...
本文将探讨一种基于Java的日志系统框架的设计与实现,该框架结合了日志服务的两种主要形式,即服务进程和系统调用,并通过Java线程技术提供同步日志发送、快速记录以及灵活的格式配置和过滤机制。 首先,日志系统...
SLF4J提供了一层抽象,允许你在不修改代码的情况下,用其他日志框架(如log4j或java.util.logging)替换Logback。此外,logback-classic还包含了一个名为`ch.qos.logback.classic.Logger`的类,它是SLF4J的实现,...
Hibernate 是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过Hibernate,开发者可以使用Java对象来操作数据库记录,而无需编写SQL语句。Hibernate 提供了强大的查询语言HQL和 Criteria...