老板下了死命令,要把日志系统切换到Logback

Log4j 介绍过了,SLF4J 也介绍过了,那接下来,你懂的,Logback 就要隆重地登场了,毕竟它哥仨有一个爹,那就是巨佬 Ceki Gulcu。

就在昨天,老板听我说完 Logback 有多牛逼之后,彻底动心了,对我下了死命令,“这么好的日志系统,你还不赶紧点,把它切换到咱的项目当中!”

我们项目之前用的 Log4j,在我看来,已经足够用了,毕竟是小公司,性能上的要求没那么苛刻。

老板下了死命令,要把日志系统切换到Logback

01、Logback 强在哪

1)非常自然地实现了 SLF4J,不需要像 Log4j 和 JUL 那样加一个适配层。

老板下了死命令,要把日志系统切换到Logback

2)Spring Boot 的默认日志框架使用的是 Logback。一旦某款工具库成为了默认选项,那就说明这款工具已经超过了其他竞品。

老板下了死命令,要把日志系统切换到Logback

注意看下图(证据找到了,来自 ):

老板下了死命令,要把日志系统切换到Logback

也可以通过源码的形式看得到:

3)支持自动重新加载配置文件,不需要另外创建扫描线程来监视。

4)既然是巨佬的新作,那必然在性能上有了很大的提升,不然呢?

02、Logback 使用示例

第一步,在 pom.xml 文件中添加 Logback 的依赖:

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

Maven 会自动导入另外两个依赖:

老板下了死命令,要把日志系统切换到Logback

logback-core 是 Logback 的核心,logback-classic 是 SLF4J 的实现。

第二步,来个最简单的测试用例:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */

public class Test {
    static Logger logger = LoggerFactory.getLogger(Test.class);
    public static void main(String[] args) {
        logger.debug("logback");
    }
}

Logger 和 LoggerFactory 都来自 SLF4J,所以如果项目是从 Log4j + SLF4J 切换到 Logback 的话,此时的代码是零改动的。

运行 Test 类,可以在控制台看到以下信息:

12:04:20.149 [main] DEBUG com.itwanger.Test - logback

在没有配置文件的情况下,一切都是默认的,Logback 的日志信息会输出到控制台。可以通过 StatusPrinter 来打印 Logback 的内部信息:

LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);

在 main 方法中添加以上代码后,再次运行 Test 类,可以在控制台看到以下信息:

12:59:22.314 [main] DEBUG com.itwanger.Test - logback
12:59:22,261 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
12:59:22,262 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
12:59:22,262 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
12:59:22,268 |-INFO in ch.qos.logback.classic.BasicConfigurator@5e853265 - Setting up default configuration.

也就是说,Logback 会在 classpath 路径下先寻找 logback-test.xml 文件,没有找到的话,寻找 logback.groovy 文件,还没有的话,寻找 logback.xml 文件,都找不到的话,就输出到控制台。

一般来说,我们会在本地环境中配置 logback-test.xml,在生产环境下配置 logback.xml。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjwxj.html