1、介绍:
SLF4J - 一个通用的日志门面库,为各种Logging API提供了一套通用的日志接口,更多信息请参考官方网站。
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 - 一个通用可靠、快速灵活的日志框架,更多信息请参考官方网站。
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相比的性能提高也是显著的”。
2、快速上手:
所需jar:
slf4j-api-1.4.3.jar - 一定是要的,直接支持logback实现
jcl104-over-slf4j-1.4.3.jar - 使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制
slf4j-jcl-1.4.3.jar - 使用SLF4J的接口,底层由common-loggin实现(不能和jcl104-over-slf4j-1.4.3.jar同时使用)
slf4j-log4j12-1.4.3.jar - 使用SLF4J的接口,底层由log4j实现
logback-core.jar logback核心包
logback-classic.jar
同时删除原来的commons-logging.jar和log4j.jar
mport org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test {
final Logger logger = LoggerFactory.getLogger(Test.class);
public void logTest() {
// 不再需要log.isDebugalbe(),代码更简洁
logger.debug(”hello {}”, “amsz”);
logger.info("hihi{}","hhhh");
}
}
再看看logback.xml的配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<substitutionProperty name="log.base" value="../logs/hzg" />
<jmxConfigurator />
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>
<!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份)-->
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${log.base}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>2MB</MaxFileSize>
</triggeringPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>
<!-- 需要记录日志的包 -->
<logger name="com.hzg.core">
<level value="WARN" />
</logger>
<logger name="com.hzg.test">
<level value="INFO" />
</logger>
<logger name="org.springframework">
<level value="WARN" />
</logger>
<logger name="org.hibernate">
<level value="WARN" />
</logger>
<logger name="org.hibernate.SQL">
<level value="WARN" />
</logger>
<logger name="org.hibernate.cache">
<level value="ERROR" />
</logger>
<root>
<level value="INFO" />
<appender-ref ref="stdout" />
<appender-ref ref="logfile" />
</root>
</configuration>
3、总结:
使用slf4j+logback的优势:
- 支持按文件大小或基于时间的切分方式,可自定义命名模式
- 支持文件打包(触发器方式)
- 支持OSGI环境
如果在单纯的logging环境中,使用SLF4J意义不大。如果想在各种logger API中切换,SELF4J是理想选择,另外在新的项目中,使用SLF4J+Logback是比较好的日志框架选型。
|
相关推荐
本文将深入探讨“调试日志之slf4j+logback”的主题,这两个组件是Java开发中的常见日志解决方案。 SLF4J(Simple Logging Facade for Java)是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、Logback等...
本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...
https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback上的jar与源码,网络不好,下载不易,特此分享。包括: logback-1.2.3.zip Tomcat7.0.82\tomcat-juli-7.0.82-slf4j-1.7.25-logback-1.2.3.zip Tomcat...
### SLF4J与Logback:新一代日志系统的解析 #### 一、SLF4J:简化日志处理的新标准 SLF4J(Simple Logging Facade for Java)作为一个新兴的日志框架,由Ceki Gülcü开发,旨在提供一个简单而统一的日志接口,以...
SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理中的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J是一个日志门面,它提供了一个统一的接口,允许开发人员在运行时插入...
今天我们将聚焦两个流行的日志框架——SLF4J(Simple Logging Facade for Java)和Logback,以及它们与Log4j和Commons-Logging的对比。 SLF4J是一个接口层的日志框架,它提供一个统一的API,允许用户在运行时插入...
SLF4J(Simple Logging Facade for Java)和Logback是Java日志处理的两个重要组件,它们在软件开发中广泛用于记录应用程序的运行时信息。SLF4J是一个日志门面,它提供了一个统一的接口,允许开发人员在运行时插入所...
SSM(Spring、SpringMVC、MyBatis)与Apache Shiro、SLF4J以及Logback是Java Web开发中的重要框架和工具,它们在构建安全、高效且可维护的Web应用方面起着关键作用。这里我们将深入探讨这些技术的核心概念、功能以及...
通常,这包括`slf4j-api.jar`(SLF4J API)、`logback-classic.jar`(Logback经典实现,包含了SLF4J的适配器)和`logback-core.jar`(Logback核心库)。这些依赖可以通过Maven或Gradle等构建工具来管理。 接下来,...
Logback是SLF4J的一个实现,由著名日志框架Log4j的创始人Ceki Gülcü所创建。Logback被认为是比Log4j更高效、功能更强大的日志处理框架。 本文将详细介绍如何使用SLF4J与Logback来输出应用程序的日志,并提供必要...
SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它提供了一个统一的API,允许开发者选择任何支持的底层日志库,如Logback、Log4j或Java内置的日志系统。Logback是陈雪峰创建的,作为Log4j的...
SLF4J允许开发者在部署时插入所需的日志实现,比如logback、log4j等,这使得项目的可移植性和灵活性大大增强。 Logback是另一个关键组件,它是由log4j的创始人Ceki Gülcü创建的。Logback是目前广泛使用的日志框架...
### SLF4J + Logback 快速上手教程 #### 一、SLF4J 简介 **SLF4J**(Simple Logging Facade for Java)是一种简单且高效的日志门面库,旨在为Java平台上的各种日志框架提供统一的API,从而简化日志记录的过程。通过...
**Slf4j与Logback简介** Slf4j(Simple Logging Facade for Java)是一个日志门面,它提供了一个统一的API,允许开发者选择合适的日志框架,如Logback、Log4j等,而无需修改代码。Slf4j的主要目标是为各种日志框架...
SLF4J(Simple Logging Facade for Java)和Logback是Java开发中广泛使用的日志处理框架。SLF4J提供了一个抽象层,允许开发者在运行时选择合适的日志实现,而Logback则是SLF4J的一个具体实现,它以其高效、灵活和...
Logback 是 SLF4J 推荐的日志实现,它由 log4j 的创始人设计,提供了高速、灵活且可靠的日志记录功能。 使用 SLF4J 和 Logback 进行日志记录配置的主要目的是: 1. 为 Spring 的开发提供了一个更快速更广泛的入门...
Tomcat SLF4J Logback是tomcat的替代产品,它允许所有内部日志记录全部使用我们喜欢的slf4j / logback库。 注意 从logback 1.1.7开始,不再需要在server.xml中包含${catalina.home}来进行logback访问。 我们还重新...
【SLF4J(Simple Logging Facade for Java)】是一个日志门面,为各种日志框架如log4j、Logback提供一个统一的接口。SLF4J允许开发者在部署时选择合适的日志实现,只需更换绑定的日志实现库即可。这使得项目具有更好...
janino-2.3.17.jar jcl-over-slf4j-1.6.1.jar log4j-1.2.8.jar logback-access-0.9.24.jar logback-classic-0.9.24.jar logback-core-0.9.24.jar ... slf4j-1.6.1+logback-0.9.24.rar slf4j-api-1.6.1.jar
On Java 8 中用到的日志包,SLF4J+Logback。