`

SLF4J介绍(藏)

阅读更多

作者:终南   <li.zhongnan@hotmail.com >

SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
实 际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC 更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC 基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志 系统的配置来实现,因此可以在应用中灵活切换日志系统。

1、什么情况可以使用
如果你开发的是类库或者嵌入式组件,那么就应该考虑采用SLF4J,因为不可能影响最终用户选择哪种日志系统。在另一 方面,如果是一个简单或者独立的应用,确定只有一种日志系统,那么就没有使用SLF4J的必要。假设你打算将你使用log4j的产品卖给要求使用JDK 1.4 Logging的用户时,面对成千上万的log4j调用的修改,相信这绝对不是一件轻松的事情。但是如果开始便使用SLF4J,那么这种转换将是非常轻松 的事情。

2、举例
(1)代码

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Wombat {
final Logger logger = LoggerFactory.getLogger(Wombat.class);
Integer t;
Integer oldT;

public void setTemperature(Integer temperature) {
   oldT = t;
   t = temperature;
  
   Object[] objs = {new java.util.Date(), oldT, t};
   logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);
   if (temperature.intValue() > 50) {
    logger.warn("Temperature({}) has risen above 50 degrees.", t);
   }
}

public static void main(String[] args) {
   Wombat wombat = new Wombat();
   wombat.setTemperature(10);
   wombat.setTemperature(60);
}
}

(2)使用SLF4J提供的simple log
将以下jar包加入到项目中,然后执行
slf4j-api-1.5.2.jar
slf4j-simple-1.5.2.jar
最终输出:
32 [main] INFO Wombat - Today is Wed Sep 10 14:50:57 CST 2008, Temperature set to null. Old temperature was 10.
32 [main] INFO Wombat - Today is Wed Sep 10 14:50:57 CST 2008, Temperature set to 10. Old temperature was 60.
32 [main] WARN Wombat - Temperature(60) has risen above 50 degrees.

(3)使用SLF4J提供的simple log
将以下jar包加入到项目中,然后执行
slf4j-api-1.5.2.jar
slf4j-jdk14-1.5.2.jar
最终输出:
2008-9-10 15:01:20 Wombat setTemperature
信息: Today is Wed Sep 10 15:01:20 CST 2008, Temperature set to null. Old temperature was 10.
2008-9-10 15:01:20 Wombat setTemperature
信息: Today is Wed Sep 10 15:01:20 CST 2008, Temperature set to 10. Old temperature was 60.
2008-9-10 15:01:20 Wombat setTemperature
警告: Temperature(60) has risen above 50 degrees.

(4)配置很简单吧
从以上事例可以看出,配置SLF4J使用那种日志系统是非常简单的一件事,只要将与你打算使用的日志系统对应的jar包 加入到项目中,SLF4J就会自动选择使用你加入的那种日志系统。这种方法被称之为静态绑定。当然,该日志系统的相关类库是不能少,例如,如果你打算使用 log4j,那么还需要log4j的类库,可能还有配置配置log4j.properties。

3、格式化日志
SLF4J还提供了格式化日志的功能,如事例中的语句:
   logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);
  
4、日志系统绑定原理
在 应用中,通过LoggerFactory类的静态getLogger()获取logger。通过查看该类的代码可以看出,最终是通过 StaticLoggerBinder.SINGLETON.getLoggerFactory()方法获取LoggerFactory然后,在通过该具 体的LoggerFactory来获取logger的。类org.slf4j.impl.StaticLoggerBinder并不在slf4j- api-1.5.2.jar包中,仔细查看每个与具体日志系统对应的jar包,就会发现,相应的jar包都有一个 org.slf4j.impl.StaticLoggerBinder的实现,不同的实现返回与该日志系统对应的LoggerFactory,因此就实现 了所谓的静态绑定,达到只要选取不同jar包就能简单灵活配置的目的。

5、参考
SLF4J官方网站:
http://www.slf4j.org/

 

 原文地址 http://hi.baidu.com/li_zhongnan/blog/item/7d2617642b08edf6f636547d.html

分享到:
评论

相关推荐

    slf4j1.6.1-1.6.4.zip

    SLF4J(Simple Logging Facade for Java)是Java领域广泛应用的日志抽象层,它为各种日志框架,如Log4j、Java Util Logging、Logback等,提供了一个统一的接口。SLF4J的核心思想是让应用程序独立于具体日志实现,...

    Logback+Slf4j,基于SpringBoot实现日志脱敏.zip

    《基于SpringBoot的日志脱敏:Logback与Slf4j的实战应用》 在现代的软件开发中,日志系统是不可或缺的一部分,它为开发者提供了系统运行时的详细信息,帮助排查问题,优化性能。SpringBoot框架以其简洁的配置和强大...

    浅谈Java日志框架slf4j作用及其实现原理

    SLF4J(Simple Logging Facade for Java)是Java日志框架的一个抽象层,它的主要目的是为各种日志实现提供一个统一的接口。这使得开发者能够在不修改代码的情况下,自由地选择日志实现,如Log4J、Logback或Java内置...

    sl4j的jar包

    SLF4J(Simple Logging Facade for Java)是一个用于各种日志框架的简单抽象,例如java.util.logging、logback和Log4j。它的主要目的是提供一个可在运行时插入所需日志框架的简单接口,使应用程序的开发人员能够在...

    simple log facade for java

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架提供了一个统一的接口,例如Log4j、Java Util Logging (JUL)、Logback等。这个设计使得开发者可以在不修改代码的情况下更换底层...

    收藏Log4j文档

    Log4j与SLF4J(Simple Logging Facade for Java)、Java Util Logging、Logback等日志框架有各自的优缺点,选择时应考虑项目需求、兼容性、性能等因素。 总之,《Log4j The Complete Manual》是学习和使用Log4j的...

    笔记30-JAVAEE之SpringBoot的日志

    本笔记将探讨Spring Boot中的日志管理,特别是如何使用Slf4j进行日志记录,并简要介绍门面模式在系统架构中的应用。 1. **Spring Boot 日志框架:** Spring Boot默认集成了多种日志框架,如Logback、Log4j2等,但...

    hive-0.13.1-cdh5.3.9.tar.gz

    4. **并行执行**:Hive通过MapReduce将复杂的查询操作分解为一系列的Map和Reduce任务,利用Hadoop集群的并行计算能力,提高了处理速度。 5. **优化器**:Hive包含一个查询优化器,可以根据数据分布和查询模式自动...

    网钛文章管理系统3.3

    4. **usersNewsUpImg.asp**:这个文件可能负责用户上传图片的功能,对于文章管理系统而言,图片的上传和展示是提升内容吸引力的重要手段,能够增强文章的可读性和视觉效果。 5. **usersCenter.asp**:用户中心,是...

    commons-logging-1.2.zip

    3. 集成SLF4J:虽然SLF4J本身是一个接口,但可以通过桥接器(如slf4j-jdk14.jar或slf4j-log4j12.jar)将SLF4J与Commons Logging连接起来。 五、优缺点分析 优点: - 提供了日志接口的统一,简化了代码。 - 动态...

    springboot 日志配置文件 logback

    logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。 logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。 ...

    java版ss源码-ErRabbit:使用Log4j的远程日志控制台服务器。可视化异常堆栈跟踪日志视图

    Log4j、slf4j(by Plinio Freire) 和 ActiveMQ 收集将使其与其他程序轻松兼容。 介绍幻灯片 有什么区别。 RrRabbit 旨在可视化错误日志 易于集成到现有的 Java 应用程序上。 한국어 설명은 에 있습니다。 结构 Web ...

    Java微信小程序商城

    slf4j1.7.19 fastjson1.2.30 poi3.15 velocity1.7 alisms1.0 quartz2.2.3 mysql5.1.39 前端使用技术 Vue2.5.1 iview layer3.0.3 jquery2.2.4 bootstrap3.3.7 jqgrid5.1.1 ztreev3.5.26 froala_...

    MyBatis官方包.rar

    - log4j-x.x.x.jar:Apache的Log4j,一种广泛使用的日志记录工具,MyBatis可能通过SLF4J进行日志输出。 - mysql-connector-java-x.x.x.jar:MySQL数据库的JDBC驱动,用于连接MySQL数据库。 - ognl-x.x.x.jar:...

    Commons Logging.zip

    3. 功能相对有限:相比更强大的日志框架(如Log4j、SLF4J),Commons Logging的功能较为简单。 尽管有这些缺点,Commons Logging仍然是许多Java项目中的首选日志抽象层,特别是在那些希望保持日志实现灵活性的项目...

    commons-logging-1.1.3.rar

    通过 Commons Logging,你可以方便地切换日志实现,如Log4j、java.util.logging (JUL) 或者 Simple Logging Facade for Java (SLF4J)。这样,如果你需要更换日志框架,只需要更改配置,而不需要修改代码。 在...

    hibernate4快速入门实例详解

    在搭建开发环境时,需要将 Hibernate 框架的库文件(包括所需的 JAR 包)添加到项目中,还需要 SLF4J 和 Log4J 的实现库,以及相应的 JDBC 驱动 JAR 包。 例如,创建一个简单的 Hibernate 应用,可以定义一个名为 `...

    java8源码-WeChat_open_shop:开源的微信小程序商城(前后台都有,只需要配置下就可以使用),收藏

    日志管理:SLF4J 1.7、Log4j JS框架:Vue 2.5.1,iview,layer 3.0.3,jquery 2.2.4,jqgrid 5.1.1 CSS框架:Twitter bootstrap3.3.7。 富文本:froala_editor1.2.2 开发环境 建议开发者使用以下环境,这样避免版本...

    commons.logging-1.1.1.jar

    - **SLF4J(Simple Logging Facade for Java)**: 提供更简单和统一的接口,推荐与Logback配合使用。 - **java.util.logging**: Java内置的日志框架,简单但功能有限。 总的来说,`commons.logging-1.1.1.jar`是...

    ssm黑马旅游整合最终版2018

    - **日志系统**:SLF4J+Log4j12。 - **其他工具类库**:Jackson(JSON处理)、Jedis(Redis客户端)、JavaMail(邮件发送)、JSTL(标签库)、Servlet API等。 ```xml &lt;!-- 单元测试 --&gt; &lt;groupId&gt;junit ...

Global site tag (gtag.js) - Google Analytics