日志框架新版综合总结

文章介绍了SLF4J日志门面如何通过适配器(如log4j-slf4j-impl)与不同日志库(如log4j2,logback)配合使用,以及日志桥接器如何实现不同日志框架之间的无缝切换。

1.日志适配器

日志适配器:使用slf4j作为门面,底层实现为其他日志实现,至少要引两个包

一个slf4j:一个第三方日志包,然后根据时间先后关系,像log4j2在slf4j之前上市,那么如果要使用slf4j+log4j2,那么还需要引入一个包log4j-slf4j-impl,用来适配兼容性,这个包就是日志适配器。如果使用slf4j+logback,那么就不需要额外引入适配器,因为已经兼容。

举例:项目使用slf4j+log4j2

<dependency>

            <groupId>org.apache.logging.log4j</groupId>

            <artifactId>log4j-core</artifactId>

            <version>2.17.0</version>

        </dependency>

        <dependency>

            <groupId>org.apache.logging.log4j</groupId>

            <artifactId>log4j-api</artifactId>

            <version>2.17.0</version>

        </dependency>

        <!--slf4j与log4j2的适配器-->

        <dependency>

            <groupId>org.apache.logging.log4j</groupId>

            <artifactId>log4j-slf4j-impl</artifactId>

            <version>2.17.0</version>

        </dependency>

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

            <version>1.7.25</version>

        </dependency>

常用适配器

A. jul

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-jdk14</artifactId>

            <version>2.0.0-alpha1</version>

        </dependency>

    B. log4j

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-log4j12</artifactId>

            <version>2.0.0-alpha1</version>

        </dependency>

      

    C.log4j2

         <dependency>

            <groupId>org.apache.logging.log4j</groupId>

            <artifactId>log4j-slf4j-impl</artifactId>

            <version>2.14.1</version>

        </dependency>

    D. logback

         <dependency>

            <groupId>ch.qos.logback</groupId>

            <artifactId>logback-classic</artifactId>

            <version>1.3.0-alpha5</version>

        </dependency>

2.日志桥接器

日志桥接器:桥接器重写了log4j2类名功能都一样,但是实现了slf4j接口。引入桥接器排除实现完美替代log4j2的类将第三方日志的接口桥接到slf4j上,因为slf4j可以和各种日志实现搭配使用,所以桥接器的作用就是将当前的日志换到slf4j,然后要想使用其他的日志实现,就可以引入对应的坐标,这样就起到一个系统里面的日志切换效果。

桥接器命名规范一般是:实现类-over/to-门面

举例实时业务场景:现在系统用的是log4j2,但是现在想换成logbak,代码不用动。

  1. 注释/删除项目中的log4j2依赖坐标
  2. 正常情况下,这个时候代码就会报错,因为没有对应的类了,此时就需要对应的桥接器了,引入log4j-to-slf4j-2.x.x.jar这个包里面有和log4j2一样路径的类,这样代码导包就不会报错了。
  3. 引入slf4j+logbak包即可

常用日志桥接器:

A. log4j --> slf4j

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>log4j-over-slf4j</artifactId>

            <version>2.0.0-alpha1</version>

        </dependency>

       B. log4j2 --->slf4j

        <dependency>

            <groupId>org.apache.logging.log4j</groupId>

            <artifactId>log4j-to-slf4j</artifactId>

            <version>2.14.1</version>

        </dependency>

       C. jul--->slf4j

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>jul-to-slf4j</artifactId>

            <version>2.0.0-alpha1</version>

        </dependency>

      

       D. jcl --->slf4j

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>jcl-over-slf4j</artifactId>

            <version>2.0.0-alpha1</version>

        </dependency>

log4j转log4j2

<dependency>

     <groupId>org.apache.logging.log4j</groupId>

     <artifactId>log4j-1.2-api</artifactId>

       <version>2.9.1</version>

</dependency>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值