📜  SLF4J-概述(1)

📅  最后修改于: 2023-12-03 14:47:28.866000             🧑  作者: Mango

SLF4J-概述

日志是程序开发人员经常需要打印的信息,以便在程序运行过程中进行调试、故障排查和性能优化等。SLF4J(Simple Logging Facade for Java)是一个通用的日志门面,程序员可以利用它将自己的程序与各种日志系统(Logback、log4j、java.util.logging等)解耦,并且在运行时可以选择不同的日志系统。

为什么需要日志门面?

在使用日志工具输出日志信息时,我们不应该仅仅满足于仅仅不断地使用if语句来判断我们是否已启用日志级别,同时许多日志框架都提供了大量丰富的特性,例如异步日志、日志滚动记录、自定义格式化输出等。然而,如果我们希望在程序升级或者切换日志框架时避免代码的修改,此时就可以考虑使用日志门面。

日志门面提供了一组遵循特定API的静态方法和参数,应用程序使用这些 API 联结到真正的日志框架。 与特定于框架的代码相比,这种方法通常更简单、更优雅,而且使应用程序具有更高的灵活性。

SLF4J作为通用的日志门面架构,可以在应用中使用,同时SLF4J可以通过适配器,与常见的日志框架进行适配,在应用程序中使用不同的日志框架,而无需更改应用代码。

SLF4J 的使用方式

接下来以logback为例,介绍如何使用SLF4J。

首先在 pom.xml 文件中加入以下依赖:

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>2.0.0-alpha2</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-core</artifactId>
  <version>1.2.3</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>
SLF4J 的基本使用
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);
        logger.info("Hello World!");
    }
}
SLF4J 的日志级别

SLF4J 的日志级别(按从低到高排序)包括:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);
        logger.trace("This is a trace message.");
        logger.debug("This is a debug message.");
        logger.info("This is an info message.");
        logger.warn("This is a warn message.");
        logger.error("This is an error message.");
    }
}
SLF4J 的占位符
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld.class);
        String name = "Jack";
        int age = 22;
        logger.info("The user is {} and his age is {}.", name, age);
    }
}

以上就是基本介绍,希望对你有所帮助。