javalog-SLF4笔记

简单日志门面(Simple Logging Facade For Java)SLF4主要是为了给Java日志访问提供一套标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一般的Java项目而言,日志框架会选择slf4j-api作为门面,配上具体的实现框架(log4j、logback等),中间使用桥接器完成桥接。

SLF4J日志门面主要提供两大功能:
1,日志框架的绑定工
2,日志框架的桥接
 

导入依赖

        <!-- slf4j 日志门面 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>

        <!-- slf4j 内置的简单实现 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>

        <!-- logback 日志实现 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
            <scope>test</scope>
        </dependency>

        <!-- log4j 日志实现 需要导入适配器 -->
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- jul 日志实现 需要导入适配器 -->
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-jdk14 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
package icu.weizhna.javalog2;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class Slf4j {

    //日志记录器对象
    public static final Logger LOGGER = LoggerFactory.getLogger(Slf4j.class);

    //快速开发
    @Test
    public void slf4jTest(){
        //日志输出
        LOGGER.error("error");
        LOGGER.warn("warn");
        LOGGER.info("info");
        LOGGER.debug("debug");
        LOGGER.trace("trace");

        //使用占位符输出日志信息
        String name = "hwz";
        int age = 18;
        LOGGER.info("用户:{} {}",name,age);

        //将系统异常信息输出
        try {
            int a = 1/0;
        } catch (Exception e) {
//            e.printStackTrace();
            LOGGER.error("error:",e);
        }

    }
}

使用slf4j的日志绑定流程:

1.添加slf4j-api的依赖
2.使用slf4j的API在项目中进行统一的日志记录

3.绑定具体的日志实现框架
        1.绑定已经实现了slf4j的日志框架,直接添加对应依赖
        2.绑定没有实现slf4j的日志框架,先添加日志的适配器,再添加实现类的依赖
4. slf4j有且仅有一个日志实现框架的绑定〈如果出现多个默认使用第一个依赖日志实现)

桥接旧的日志框架

使用场景:项目初期时没有想到代码的扩展升级方面,就使用了log4j日志实现,但是项目后期想要改为slf4j日志门面+logback日志框架,但是直接改的话就需要改动成千上万的条源代码,这样做是不现实的。

桥接解决的是项目中日志的遗留问题,当系统中存在之前的日志API,可以通过桥接转换到slf4j的实现

1.先去除之前老的日志框架的依赖
2.添加SLF4J提供的桥接组件

3.为项目添加SLF4J的具体实现

现在是使用log4j日志实现

package icu.weizhna.javalog2;

import org.apache.log4j.Logger;
import org.junit.Test;

public class Log4j {
    //日志记录器对象
    public static final Logger LOGGER = Logger.getLogger(Log4j.class);

    @Test
    public void test1(){
        LOGGER.info("info");
    }

}


当改为slf4j日志门面+logback日志框架时,想要不改动源码,需要添加log4j的桥接器

<!-- log4j的桥接器 -->
<!-- https://mvnrepository.com/artifact/org.slf4j/log4j-over-slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>1.7.25</version>
</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值