java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot日志的使用与多个日志框架冲突

springboot日志的使用与多个日志框架冲突问题及解决

作者:worilb

文章介绍了日志级别、日志分类、logback、log4j、log4j2的使用方法,并讨论了统一日志标准的重要性,还提到了各种日志类Jar包的用途,以及如何实现SLF4J门面以兼容不同的日志框架

springboot日志的使用与多个日志框架冲突

1.日志级别

从低至高为:ALL——DEBUG——INFO——WARN——ERROR——OFF,

日志级别越低打印的日志越详细。

2.日志分类

3.logback日志的使用

springboot默认使用logback日志。




4.log4j的使用

<!--        log4j依赖-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>

5.log4j2的使用

<!--        log4j2依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>


6.统一日志标准

1.三种日志框架(实现不同门面)同时使用演示



从前面的例子我们可以看出,Logback已经默认实现了slf4j标准,而Log4j和Log4j2并没有实现。

2.log4j实现slf4j门面



<!--        springboot启动器依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
<!--                    排除logback包-->
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3.log4j2实现slf4j门面


<!--        log4j2实现slf4j依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
        </dependency>


<!--        springboot启动器依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
<!--                    排除logback包-->
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
                <exclusion>
<!--                    排除log4j2桥接slf4j依赖-->
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-to-slf4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

7.各种日志类Jar包用途

jcl-over-slf4j.jar  -->    (jcl    -> slf4j)    将Jakarta Commons Logging日志框架到 slf4j 的桥接  
jul-to-slf4j.jar    -->    (juc    -> slf4j)    将java.util.logging的日志桥接到 slf4j  
log4j-over-slf4j.jar-->    (log4j  -> slf4j)    将log4j 的日志,桥接到slf4j  
osgi-over-slf4j.jar -->    (osgi   -> slf4j)    将osgi环境下的日志,桥接到slf4j  
slf4j-android.jar   -->    (android-> slf4j)    将android环境下的日志,桥接到slf4j  
slf4j-api.jar       -->                         slf4j 的api接口jar包  
slf4j-ext.jar       -->                         扩展功能  
slf4j-jcl.jar       -->    (lf4j -> jcl )          slf4j 转接到 Jakarta Commons Logging日志输出框架  
slf4j-jdk14.jar     -->    (slf4j -> jul )          slf4j 转接到 java.util.logging,所以这个包不能和jul-to-slf4j.jar同时用,否则会死循环!!  
slf4j-log4j12.jar   -->    (slf4j -> log4j)         slf4j 转接到 log4j,所以这个包不能和log4j-over-slf4j.jar同时用,否则会死循环!!  
slf4j-migrator.jar  -->                                       一个GUI工具,支持将项目代码中 JCL,log4j,java.util.logging的日志API转换为slf4j的写法  
slf4j-nop.jar       -->    (slf4j -> null)          slf4j的空接口输出绑定,丢弃所有日志输出  
slf4j-simple.jar    -->    (slf4j -> slf4j-simple ) slf4j的自带的简单日志输出接口
log4j-1.2-api.jar   -->    (log4j  -> log4j2)               将log4j 的日志转接到log4j2日志框架  
log4j-api.jar       -->                                     log4j2的api接口jar包  
log4j-core.jar      -->    (          log4j2 -> log4j-core) log4j2的日志输出核心jar包  
log4j-slf4j-impl.jar-->    (slf4j  -> log4j2)               slf4j 转接到 log4j2 的日志输出框架  (不能和 log4j-to-slf4j同时用)  
log4j-to-slf4j.jar  -->    (          log4j2 -> slf4j)      将 log4j2的日志桥接到 slf4j  (不能和 log4j-slf4j-impl 同时用)  

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文