zoukankan      html  css  js  c++  java
  • slf4j

    Java简单日志外观(Simple Logging Façade for Java, slf4j)是其他日志框架(java.util.logging, logback, log4j)的一个简单的外观或抽象,以相同API使用不同的日志框架,在部署时插入自己喜欢的日志框架。

     

    slf4j依赖项为 slf4j-api.jar,如果在类路径上没有绑定任何框架,则slf4j默认不执行任何操作。

     

    Hello World

    按照一贯习俗,下例解释用最简单的方式以slf4j输出 "Hello world"

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

     

    public class HelloWorld {

    public static void main(String[] args) {

    Logger logger = LoggerFactory.getLogger(HelloWorld.class);

    logger.info("Hello World");

    }

    }

    如果只将slf4j-api.jar添加到路径中,运行后出现如下信息:

    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".

    SLF4J: Defaulting to no-operation (NOP) logger implementation

    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

    因为slf4j没有绑定任何日志框架,如果将slf4j-simple.jar添加到类路径:

    • slf4j-api-1.7.12.jar
    • slf4j-simple-1.7.12.jar

    编译后运行,则控制台出现如下输出:

    [main] INFO cn.ac.dicp.slf4j.HelloWorld - Hello World

     

    典型使用模式

    下面的简单代码演示了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 tem){

    oldT = t;

    t = tem;

    logger.debug("temperature set to {}. Old temperature was {}.",toString(),oldT);

    if(tem.intValue() > 50){

    logger.info("Temperature has risen above 50 degrees.");

    }

    }

    }

    注意上面的'{}'

     

    绑定日志框架

    slf4j支持多种日志框架:

    slf4j-log4j12-1.7.12.jar

    绑定log4j 1.2,一个应用广泛的日志框架,在路径中同时要添加log4j.jar.

    slf4j-jdk14-1.7.12.jar

    绑定 java.util.logging,也称为JDK 1.4 logging

    slf4j-nop-1.7.12.jar

    绑定NOP,默默的放弃所有日志。

    slf4j-simple-1.7.12.jar

    绑定简单实现,输出所有日志到System.err。只有level 高于或等于INFO的信息输出。

    slf4j-jcl-1.7.12.jar

    绑定Jakarta Commons Logging

    logback-classic-1.0.13.jar

    需要logback-core-1.0.13.jar

    NATIVE IMPLEMENTATION slf4j外,也有slf4j自身的绑定矿建。如logback,本地实现slf4jlogback ch.qos.logback.classic.Logger类直接实现slf4j org.slf4j.Logger接口。因此,结合使用slf4jlogback的内存和计算量几乎为零。

     

    更改日志框架,直接更改类路径的包即可,如将slf4j-jdk14-1.7.12.jar换成 slf4j-log4j12-1.7.12.jarslf4j一次只能绑定一个框架,不要在路径上放置两个或更多的连接jar

    clip_image001

     

    slf4j接口及适配器都极为简单。

     

    Libraries

    那些广泛使用的组件和库的作者使用slf4j接口,能避免终端用户必须使用何种日志框架,用户可以在部署时选择喜欢的日志框架,更改对应的连接jar即可,该方法简单有效。

  • 相关阅读:
    自定义、操作cookie
    云中沙箱学习笔记2-ECS之初体验
    云中沙箱学习笔记1-快速部署并使用MySQL数据库
    练习小程序
    理解Thread.sleep()函数
    排序:冒泡排序;直接选择排序;反转排序
    float和double
    BigDecimal
    Linux学习笔记5(2)-CentOS7中Tomcat8修改jvm内存配置
    ret2dl学习笔记
  • 原文地址:https://www.cnblogs.com/jiawei-whu/p/4761918.html
Copyright © 2011-2022 走看看