SLF4J+logBack, 日志领域中的新秀
Ceki Gülcü创造了日志领域界著名的Log4J,现在又实现一个“简单的日志前端接口(Façade)”- SLF4J,和一个“可靠、通用、快速而又灵活的Java日志框架”- LOGBack。作为日志领域中的新秀,已经有种颠覆领域的趋势了。
SLF4J(Simple Logging Facade for Java)作为commons-logging的替代,为各种logging APIs提供了一个简单的统一接口,使得最终用户能够在部署的时候配置所希望的logging APIs的实现。
SLF4J会根据classpath中所存在的适配器的jar来决定将使用的日志实现库。
若需要将使用了其它logging APIs的第三方类库或已有代码的日志调用迁移到SLF4J,需要替换下面的jar:
jcl-over-slf4j.jar
替换apache commons logging。
log4j-over-slf4j.jar
替换log4j。原有的log4j.properites将失效,需要转换为logback.xml,logback网站上有提供转换器:http://logback.qos.ch/translator/。
jul-to-slf4j.jar
替换jdk logging。需要在程序开始时调用SLF4JBridgeHandler.install()来注册listener。
SLF4J支持参数化的log字符串,避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug(“current user is: {}”, user)。拼装消息被推迟到了它能够确定是不是要显示这条消息的时候,但是获取参数的代价并没有幸免。同时,日志中的参数若超过三个,则需要将参数以数组的形式传入,如:
Object[] params = {value1, value2, value3};
logger.debug(“first value: {}, second value: {} and third value: {}.”, params);
现在Hibernate、Jetty、Spring-OSGi、Wicket和MINA等项目都已经迁移到了SLF4J,由此可见SLF4J的影响力不可忽视。
LogBack将作为Log4j的替代,和slf4j组成新的日志系统的完整实现。LogBack分为三个模块:logback-core、logback-classic和logback-access。logback-core是其它两个模块的基础;logback-classic是log4j的一个改良版本; logback-access与Servlet容器集成提供通过Http来访问日志的功能。
LogBack声称具有极佳的性能:
“某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在LogBack中需要3纳秒,而在Log4J中则需要30纳秒。LogBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的”。
对于一般的系统,个人感觉迁移到SLF4J的必要性不是很大,如果是开发公用类库的话,就很有必要了,而且SLF4J解决了classloader的问题也是个很大的优势。Log是导致程序性能下降的一个问题,LogBack的优化使性能有了很大的提升,如果你的程序遇到了瓶颈,需要全面进行优化的时候,LogBack不失为一个好的选择。是否需要迁移,可从多方面进行考量
分享到:
相关推荐
在IT行业中,日志记录是系统调试、故障排查和性能分析的重要工具。本文将深入探讨“调试日志之slf4j+...文档《复件 日志系统.docx》可能包含了更多关于如何配置和使用SLF4J+Logback的详细信息,建议进一步查阅学习。
本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...
SLF4J提供了一种统一的日志接口,使得开发者可以在不改变代码的情况下切换不同的日志实现,如Log4j、Logback或Java内置的日志系统。它的核心思想是通过接口隔离日志记录的逻辑,避免与具体实现耦合。 2. **Logback...
通过上述内容,我们可以了解到SLF4J和Logback日志系统的使用方法以及其主要特点。对于开发人员来说,理解并熟练使用这套日志系统,能够帮助提升代码的可读性,方便调试和问题排查,同时也能提高项目的维护性。
在压缩包中,`slf4j-1.7.6`包含了SLF4J的API和实现桥接器,这些桥接器允许SLF4J与其它日志系统(如Log4j、java.util.logging)配合工作。`logback-1.1.1`则包含了Logback的全套源码和class文件,包括其核心库、经典...
Logback则是由Log4j的创始人Ceki Gülcü设计的一个更现代、更高效的日志系统。它被设计为比Log4j更快,同时提供了更丰富的配置选项和更好的性能。Logback分为三个组件:ch.qos.logback.core(核心库),ch.qos....
api-*.jar`)、Logback核心库(如`logback-core-*.jar`)、Logback经典库(如`logback-classic-*.jar`)以及任何其他依赖,例如Jansi(用于控制台颜色)或JUL到SLF4J适配器(如果需要与Java内置日志系统集成)。...
本文将通过一个配置实例,详细介绍如何在项目中集成和使用SLF4J与Logback。 首先,我们需要在项目的类路径下添加SLF4J和Logback的相关依赖。通常,这包括`slf4j-api.jar`(SLF4J API)、`logback-classic.jar`...
- `jul-to-slf4j.jar`:用于替换JDK自带的日志系统。 #### 二、Logback 介绍 **Logback**是一个开源日志框架,由Log4j的作者Ceki Gülcü开发。Logback以其高性能、灵活的配置以及强大的功能而著称。它旨在提供比...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它提供了一个统一的API,允许开发者选择任何支持的底层日志库,如Logback、Log4j或Java内置的日志系统。Logback是陈雪峰创建的,作为Log4j的...
Logback 是 SLF4J 推荐的日志实现,它由 log4j 的创始人设计,提供了高速、灵活且可靠的日志记录功能。 使用 SLF4J 和 Logback 进行日志记录配置的主要目的是: 1. 为 Spring 的开发提供了一个更快速更广泛的入门...
SSM(Spring、SpringMVC、MyBatis)与Apache Shiro、SLF4J以及Logback是Java Web开发中的重要框架和工具,它们在构建安全、高效且可维护的Web应用方面起着关键作用。这里我们将深入探讨这些技术的核心概念、功能以及...
SLF4J允许开发者在部署时插入所需的日志实现,比如logback、log4j等,这使得项目的可移植性和灵活性大大增强。 Logback是另一个关键组件,它是由log4j的创始人Ceki Gülcü创建的。Logback是目前广泛使用的日志框架...
Slf4j(Simple Logging Facade for Java)是一个日志门面,它提供了一个统一的API,允许开发者选择合适的日志框架,如Logback、Log4j等,而无需修改代码。Slf4j的主要目标是为各种日志框架提供一个简单统一的接口,...
【SLF4J(Simple Logging Facade for Java)】是一个日志门面,为各种日志框架如log4j、Logback提供一个统一的接口。SLF4J允许开发者在部署时选择合适的日志实现,只需更换绑定的日志实现库即可。这使得项目具有更好...
Tomcat SLF4J Logback是tomcat的替代产品,它允许所有内部日志记录全部使用我们喜欢的slf4j / logback库。 注意 从logback 1.1.7开始,不再需要在server.xml中包含${catalina.home}来进行logback访问。 我们还重新...
3. **SLF4J支持**:logback-classic自然地实现了SLF4J,使得切换到其他日志系统变得简单。 4. **丰富的文档**:官方提供了详尽的文档,便于学习和使用。 5. **配置文件自动重载**:当配置文件变更时,Logback能自动...
On Java 8 中用到的日志包,SLF4J+Logback。
SLF4J(Simple Logging Facade for Java)与Logback是Java日志处理中的两个重要组件,它们在软件开发中广泛用于实现灵活、高效的日志记录。SLF4J作为一个日志门面,提供了一种统一的日志API,使得开发者能够在不绑定...