`

SLF4J 教程(自由在各种log中切换)

阅读更多

引用from: http://www.blogjava.net/dreamstone/archive/2007/07/09/128993.html

 

一、介绍:
简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的
接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以
选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现
来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。在SLF4J发行版本中包含了几个
jar包,如slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-log4j13.jar,
slf4j-jdk14.jar and slf4j-jcl.jar通过这些jar文件可以使编译期与具体的实现脱离。或者说可以
灵活的切换
二、官方站点
官方的网站:http://www.slf4j.org/manual.html
三、为何使用slf4j?
我们在开发过程中可能使用各种log,每个Log有不同的风格、布局,如果想灵活的切换那么slf4j是比较好的
选择。
四、如何使用slf4j
下边一段程序是经典的使用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;
        logger.error(
"Temperature set to {}. Old temperature was {}.", t, oldT);
        
if (temperature.intValue() > 50{
            logger.info(
"Temperature has risen above 50 degrees.");
        }

    }

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

}


下边介绍一下运行上边程序的过程。
1,编译上边的程序,需要classpath中加入slf4j-api-1.4.1.jar文件
2,运行时,需要classpath中加上slf4j-simple-1.4.1.jar
运行得到结果:
----------------------------
0 [main] ERROR Wombat - Temperature set to 1. Old temperature was null.
0 [main] ERROR Wombat - Temperature set to 55. Old temperature was 1.
0 [main] INFO Wombat - Temperature has risen above 50 degrees.
这个是simple log风格,

3,切换:如果想切换到jdk14的log的风格,只需要把slf4j-simple-1.4.1.jar
从classpath中移除,同时classpath中加入slj4j-jdk14-1.4.1.jar
这时的运行结果:
---------------------------------------------------
2007-7-9 10:40:15 Wombat setTemperature
严重: Temperature set to 1. Old temperature was null.
2007-7-9 10:40:16 Wombat setTemperature
严重: Temperature set to 55. Old temperature was 1.
2007-7-9 10:40:16 Wombat setTemperature
信息: Temperature has risen above 50 degrees.
已经变成jdk14的log风格了。
4,再次切换到log4j

http://logging.apache.org/log4j/index.html
同样移除slj4j-jdk14-1.4.1.jar,加入slf4j-log4j12-1.4.1.jar,同时加入log4j-1.2.x.jar
加入log4j.properties。得到显示结果:
---------------------------------------
10:42:27,328 ERROR Wombat: Temperature set to 1. Old temperature was null.
10:42:27,328 ERROR Wombat: Temperature set to 55. Old temperature was 1.
10:42:27,328  INFO Wombat: Temperature has risen above 50 degrees.
在不同的风格中切换只需要在部署期切换类库就可以了,和开发时无关。

 

SLF4J的作者就是Log4j的作者,他正在开发logback来代替log4j,logback有更高的性能。logback支持上面提到的
logger.error("Temperature set to {}. Old temperature was {}.", t, oldT);
commons-logging没有提供类似的接口,SLF4J提供了,而且解决了classloader的问题

 

 

 

分享到:
评论

相关推荐

    slf4j1.7.25+ log4j2.8.2 集成jar包

    描述中提到的是`slf4j-log4j`,这通常是指SLF4J的Log4j绑定包,它提供了SLF4J到Log4j的桥接,使得SLF4J调用能够被Log4j接收并处理。在项目中,你需要将这两个jar包加入到类路径中,同时配置Log4j的配置文件,以指定...

    log4j-1.2.17.jar、slf4j-api-1.7.21.jar、slf4j-log4j12-1.7.2.jar

    在给定的文件中,我们关注的是三个关键的JAR文件:`log4j-1.2.17.jar`、`slf4j-api-1.7.21.jar`以及`slf4j-log4j12-1.7.2.jar`。这些文件在配置Hibernate和Spring框架时起着核心作用。 首先,让我们深入了解`log4j-...

    slf4j-1.7.17

    总的来说,SLF4J的设计理念是为了提供一个轻量级、灵活的日志抽象层,让开发者能够在不修改代码的情况下自由切换日志框架,同时保持代码的整洁和可维护性。因此,许多现代Java项目倾向于使用SLF4J作为日志解决方案的...

    slf4j+log4j

    为了将SLF4J与Log4j结合使用,你需要在项目中引入`slf4j-api.jar`和`log4j.jar`,并且配置Log4j的配置文件(通常为`log4j.properties`或`log4j.xml`)。配置文件决定了日志的输出格式、级别、目的地等,可以根据项目...

    slf4j-1.5.2.zip

    这个接口层使得开发者能够在不修改代码的情况下,自由地切换不同的日志框架,如Logback、Log4j等。在你的问题中,"org.slf4j.impl.StaticLoggerBinder class could not be loaded into memory" 错误通常表明SLF4J在...

    slf4j-1.6.2.zip

    总结来说,SLF4J是Java日志记录的抽象层,通过使用SLF4J,开发者可以在不改变代码的情况下,自由地切换底层日志实现,如Log4j、logback或Java内置的日志系统。"slf4j-1.6.2.zip"提供的文件使得开发者能够轻松集成并...

    slf4j-migrator.jar.zip

    SLF4J(Simple Logging Facade for Java)是Java中一个流行的日志抽象层,它为各种日志框架,如Log4j、java.util.logging、Logback等提供了一个统一的接口。SLF4J-Migrator是一个实用工具,用于帮助开发者从其他日志...

    log4j logback slf4j

    当你在项目中使用SLF4J时,你可以选择Log4j或Logback作为底层实现。通常,由于Logback的性能优势,很多现代项目会优先考虑使用Logback。 **使用场景** - **小型项目**:如果项目规模较小,不需要复杂的日志配置,...

    slf4j-android

    SLF4J(Simple Logging Facade for Java)是Java平台上的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得最终用户能够在部署时插入所需的日志实现。在Android开发中,SLF4J同样扮演...

    slf4j-jcl-1.7.7.zip

    SLF4J(Simple Logging Facade for Java)和Jakson API是两个在Java开发中广泛使用的库。SLF4J是一个日志门面,而Jakson API是用于JSON处理的库。下面将详细介绍这两个概念以及它们在开源项目中的应用。 **SLF4J**...

    slf4j-1.6.5

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如log4j、java.util.logging、logback等,提供了一个统一的API,使得开发者可以在运行时选择合适的日志实现。标题中的"slf4j-...

    slf4j-1.6.1+logback-0.9.24

    SLF4J(Simple Logging Facade for Java)与Logback是Java日志处理中的两个重要组件,它们在软件开发中广泛用于实现灵活、高效的日志记录。SLF4J作为一个日志门面,提供了一种统一的日志API,使得开发者能够在不绑定...

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

    这使得开发者能够在不修改代码的情况下,自由地选择日志实现,如Log4J、Logback或Java内置的Logging API。SLF4J的设计理念是遵循门面模式,将复杂的日志实现细节隐藏起来,提供一个简洁的API供用户使用。 门面模式...

    浅谈Slf4j与其他日志系统兼容的使用方法

    其设计目标是提供一个简单统一的API,使得开发者能够在不改变代码的情况下,自由地切换日志框架,如log4j、logback等。这种灵活性在多框架集成的Java应用中尤其重要,因为不同的框架可能会使用不同的日志系统,这...

    Log4j.jar工具包

    在实际应用中,Log4j.jar可以与其他日志处理库(如SLF4J)结合使用,以实现更高级别的抽象和灵活性。同时,由于其开源和社区活跃,Log4j不断更新改进,以应对不断变化的开发环境和安全需求。例如,2021年曝光的Log4...

    JAVA常用类库之一-日志相关类库.docx

    例如,如果你发现一个优秀的第三方库使用了Log4j,但你的项目已经采用了`java.util.logging`,SLF4J可以作为中介,让你在两者之间进行切换,无需修改第三方库的代码。 2. **资源效率**:使用SLF4J可以减少内存占用...

    日志包,log4j等等那些日志包

    SLF4J(Simple Logging Facade for Java)则是一个接口层,为各种日志框架提供了统一的API,使得在不同的日志实现之间切换变得更加容易。例如,如果你的项目一开始使用了log4j,但后来想改用Logback,只需更改配置,...

    JAVA日志组件系列(二)logback1.0.13and sli4j1.7.5

    在压缩包文件`logback_slf4j_pom`中,可能包含了logback和SLF4J的依赖项配置,这对于Maven项目来说是至关重要的。`pom.xml`文件定义了项目的依赖树,确保在构建时自动下载并引入相应的库。 总结起来,JAVA日志组件...

    slfj日志框架

    SLF4J(Simple Logging Facade for Java)是Java领域中广泛使用的日志抽象层,它的设计目的是为各种日志框架提供一个简单的接口,比如log4j、java.util.logging、logback等。SLF4J允许用户在部署时选择希望的日志...

    google-api-services-admin-reports_v1-rev11-1.16.0-rc.zip

    SLF4J是一个接口层,允许开发者在不同的日志框架之间切换,如Logback、Log4j等,而无需修改代码。slf4j-logging可能是针对特定日志库(例如java.util.logging)的一个适配器,增强了日志输出的格式定制能力。 ...

Global site tag (gtag.js) - Google Analytics