美文网首页
日志-slf4j

日志-slf4j

作者: 张明学 | 来源:发表于2020-04-18 00:07 被阅读0次

    本篇主要介绍slf4j。slf4j全称:Simple Logging Facade for Java简单日志门面(Facade)。它只提供一个标准的日志接口。日志的实现还有各个日志系统实现,如log4j、log4j2、logback等等。这样做的好处是:如果各个子系统(如第三方库)都直接使用不同的日志系统,那么集成这些子系统的时候就间接引入了各个日志系统。

    上面介绍了slf4j只是一套标准的日志API接口,具体的实现还是某个日志库(log4j、logback等)来处理,由于各个第三方日志库都是由各个实现,它们并没有实现统一的接口,因为还需要一个中间转换的桥梁 slf4j-xxx.jar。如slf4j-log4j2.jar、slf4j-logback.jar ......
    其结构如下:
    slf4j-api(接口层) --> 各日志实现包的连接层(slf4j-log4j)-->各日志实现包(log4j)


    0d338744ebf81a4c54469e6ed72a6059252da624.png

    slf4j集成log4j2

    • 依赖
            <!-- slf4j核心包-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.30</version>
            </dependency>
    
            <!--slf4j对应log4j2的中间件,即桥接 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>2.13.1</version>
            </dependency>
    
            <!-- log4j2 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.13.1</version>
            </dependency>
    

    其实log4j-slf4j-impl其实已经引用了log4j-core和log4j-api。所以下面的配置也可以的:

    <!-- slf4j核心包-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.30</version>
            </dependency>
    
            <!--slf4j对应log4j2的中间件,即桥接 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-slf4j-impl</artifactId>
                <version>2.13.1</version>
            </dependency>
    
    • 添加log4j2的配置文件 resources/log4j2.properties(class根目录)
    appender.out.name = STDOUT
    appender.out.type = Console
    appender.out.layout.type = PatternLayout
    appender.out.layout.pattern = [%30.30t] %l %-5p %m%n
    
    rootLogger.level = INFO
    rootLogger.appenderRef.out.ref = STDOUT
    

    也可以使用log4j2.xml(推荐)。有关配置参考我的另一篇文章和官方文档:
    SpringBoot-集成Log4j2
    官方文档

    使用:

    private static Logger logger = LoggerFactory.getLogger(Demo1.class);
    
    public static void main(String[] args) {
        logger.info("test={}", "message");
    }
    

    slf4j的官方文档:http://www.slf4j.org/apidocs/org/slf4j/Logger.html

    可能早期开发的同学都用过log4j,log4j和log4j2都是Apache的一个开源项目,log4j2是重新架构的一款日志组件。它们有一些区别:

    • log4j的groupId和artifactId都是log4j,只需要一个jar即可。(log4j2是两有个log4j-core和log4j-api,groupId变成了org.apache.logging.log4j,artifactId是log4j-core和log4j-api)
    • 版本是1.x.x(log4j2的版本号是2.x.x)
    • 包名是:org.apache.log4j(log4j2的包是:org.apache.logging.log4j)
    • 配置文件默名文件名是:log4j.properties(log4j2的默名配置文件log4j2.xml)

    本人是因为很早些年使用log4j,所以在这里介绍了一下log4j和log4j2在引用上的差别,功能上的别差更大,推荐使用log4j2

    相关文章

      网友评论

          本文标题:日志-slf4j

          本文链接:https://www.haomeiwen.com/subject/flcpvhtx.html