`
qq123zhz
  • 浏览: 530775 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

slf4j的使用

    博客分类:
  • java
阅读更多

   最近在利用ibatis3开发项目,从ibatis3的压缩包中发现了slf4j,以前从来没用过,在其他地方看到log4j居多,从来没用过slf4j,看来ibatis3还是蛮推荐slf4j,在网上找了下资料,发现还是蛮好用的。

 

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

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);
}
}

 

1、使用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.

2、使用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.

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

 

4、格式化日志
SLF4J还提供了格式化日志的功能,如事例中的语句:
   logger.info("Today is {}, Temperature set to {}. Old temperature was {}.", objs);
 
5、日志系统绑定原理
在应用中,通过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包就能简单灵活配置的目的。

 

 

分享到:
评论

相关推荐

    slf4j-1.7.21所有相关jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    slf4j使用手册

    #### 四、SLF4J 示例 下面是一个使用 SLF4J 和 Log4j 的简单示例: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogExample { private static final Logger logger = ...

    SLF4j中文使用手册

    SLF4J(Simple Logging Facade for Java)是一个用于Java编程语言的日志门面框架,它提供了一个简单的抽象层,用以使用各种日志框架,例如java.util.logging、logback和log4j。门面模式的好处在于,开发者可以在不同...

    log4j + slf4j-api + slf4j-log4j12

    slf4j-log4j12-1.7.x版本是SLF4J针对Log4j 1.2版本的绑定器,它使得应用可以使用SLF4J接口,但实际的日志输出通过Log4j进行。这个桥接器让项目能利用SLF4J的灵活性,同时使用Log4j的成熟实现。 在提供的文件名列表...

    slf4j-api.jar和slf4j-nop.jar打包下载

    在某些场景下,比如测试环境中,你可能希望避免日志带来的额外开销,此时使用slf4j-nop.jar就非常合适。 标签"slf4j"直接指出了这个压缩包的主题,它是与SLF4J相关的资源。 压缩包内的文件名称列表中,"slf4j-api-...

    slf4j jar包

    org.slf4j.ILoggerFactory.class org.slf4j.IMarkerFactory.class org.slf4j.Logger.class org.slf4j.LoggerFactory.class org.slf4j.MDC.class org.slf4j.Marker.class org.slf4j.MarkerFactory.class org.slf4j....

    最新slf4j-1.7.21.zip源码和jar包

    1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources....

    slf4j-log4j12-1.7.12.jar、slf4j-api-1.7.12.jar

    具体来说,这个版本(1.7.12)的绑定包实现了SLF4J的API,并将其桥接到log4j的实现上,使得开发者可以通过SLF4J的API来使用log4j的功能。"slf4j-api-1.7.12.jar"则是SLF4J的核心API库,包含了所有SLF4J的日志记录...

    Slf4j-1.5.8

    通过使用SLF4J,开发者可以在不修改代码的情况下,选择或切换日志框架,如Log4j、Logback或Java内置的日志系统。这增强了灵活性,使得项目在不同的环境中可以轻松调整日志实现。 在SLF4J 1.5.8中,主要包括以下几个...

    最新slf4j-1.7.25.zip源码和jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    Java Slf4j依赖包

    2. `slf4j-jdk14-1.5.6.jar`:这是一个适配器模块,它使得Slf4j可以使用Java内置的日志系统(java.util.logging)作为其后台日志框架。如果你的应用环境中已经使用了Java内置的日志,那么这个适配器可以让Slf4j无缝...

    slf4j最新jar包下载和jar包

    在描述中提到的"lombok.extern.slf4j.Slf4j注解错误",这可能是指在使用Lombok和SLF4J时遇到的一些问题,例如缺少对应的依赖、配置错误或者版本不兼容。为了解决这些问题,通常需要检查以下几点: 1. 确保项目中已...

    slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12.jar

    然而,要注意的是,使用SLF4J时,你需要避免类路径中的“类装载器争抢”问题,即多个SLF4J绑定同时存在的情况,这会导致警告信息。为了避免这种情况,你需要确保项目中只包含一个SLF4J的绑定实现。 在实际应用中,...

    slf4j-api-1.7.26.zip

    描述中提到的"slf4j-api-1.7.26.jar"是SLF4J API的核心库,它包含所有开发者需要使用的接口和类,例如`org.slf4j.Logger`和`org.slf4j.LoggerFactory`。`Logger`接口提供了不同级别的日志记录方法,如`trace()`, `...

    slf4j-api-1.7.7,slf4j-log4j12-1.7.7

    SLF4J(Simple Logging Facade for Java)是Java中一个重要的日志接口框架,它为各种日志实现提供了一个抽象层,使得开发者能够在运行时动态地选择具体使用的日志实现,例如Log4j、Java Util Logging (JUL)、Logback...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...

    slf4j所需要的所有jar文件集合

    1. **slf4j.api-1.6.1.jar**:这是SLF4J的核心API库,包含了所有SLF4J的接口和注解,使得开发者可以在代码中使用SLF4J的API进行日志记录。例如,`org.slf4j.Logger`和`org.slf4j.LoggerFactory`是SLF4J中最常用的类...

    slf4j-api-1.6.1-slf4j-nop-1.6.1.rar

    4. **兼容性**: 使用NOP绑定不会影响SLF4J API的使用,因为API与实现之间是解耦的。 **使用SLF4J的好处** 1. **灵活性**: 开发者可以根据项目需求自由选择日志实现,只需更改配置即可。 2. **可移植性**: 应用程序...

    slf4j-api-1.7.25

    在使用`slf4j-api-1.7.25`时,开发者应仔细阅读这个文件以了解如何正确集成到项目中,以及如何避免常见的问题,如“NoBindingException”,这通常是由于缺少适当的日志框架绑定导致的。 使用SLF4J的好处在于,它...

Global site tag (gtag.js) - Google Analytics