日志-slf4j

2020-04-18  本文已影响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>
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,所以在这里介绍了一下log4j和log4j2在引用上的差别,功能上的别差更大,推荐使用log4j2

上一篇下一篇

猜你喜欢

热点阅读