Spring-Boot-2x八日志框架的选择和使用

44次阅读

共计 1435 个字符,预计需要花费 4 分钟才能阅读完成。

我们为啥要用日志?

最初我们开始接触 Java 的时候,我们通常会使用 System.out.println() 将我们想要知道的信息打印到控制台。
但是,如果在服务器上我们去运行我们的 Java 程序,这个时候就凸显了日志对于一个系统来说的重要性,查找异常信息、分析系统运行情况等都需要用到日志。

为什么是 SLF4J?

默认情况下,Spring Boot 会用 SLF4J + Logback 来记录日志,并用 INFO 级别输出到控制台。

SLF4J,即简单日志门面(Simple Logging Facade for Java),它可以看做是一个接口框架,并不提供具体的实现,具体的实现由类似于 Log4jLog4j2Logback 等等这样的日志框架去完成。

我们为什么要在实际的应用中去使用 SLF4J 的 API 呢?
在阿里巴巴的开发手册上也给我们明确【强制】规定了

而百度百科上也给出了相应的解释:

SLF4J 让你的代码独立于任何特定的日志记录 API,可以让我们的程序更加的健壮,不会让你因为不同日志的实现而导致的问题去分心。

使用 SLF4J 的另外一个理由就是,它可以支持 占位符

String name = "Vi";
logger.debug("My Name is {}", name);

这段程序在运行时刻才会拿到 name 这不仅缩减了代码中的许多字符串连接,而且减少了创建 String 对象所需要的堆内存资源

怎么使用 SLF4J?

如果我们在一个 Spring Boot 的程序中去使用 SLF4J,我们不需要去引入其他的包,因为我们引入的有关 spring-boot-starter 中就已经包含了有关 slf4j 的 jar 包。我们只需要通过 LoggerFactory 去获取即可:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static final Logger logger = LoggerFactory.getLogger(ResponseAop.class);

这里需要注意看我们选择的是不是 slf4j 包下的 Logger,不要选错了哟。

配合 Lombok 使用 @Slf4j

首先在 pom.xml 中添加 Lombok 的依赖:

        <dependency>
           <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

然后打开 IDEA 的设置项,在 Plugins 中查找:

注意安装插件后记得重启使其生效!

然后,我们在项目中就可以这样去使用:

@Slf4j
public class Slf4JTest {public static void main(String[] args) {log.info("This is a Slf4jTest");
    }
}

关于日志的配置

这里我就偷个懒,因为网上一搜一大堆,但是实际上你用的时候还是要根据自己的项目的情况进行使用的(你可以关注我,我会在后面的项目实战中去配置,并给出源码)。

这里需要注意一点:默认情况下,Spring Boot 将日志输出到控制台,不会写到日志文件。如果要编写除控制台输出之外的日志文件,则需在 application.yml 中设置 logging.filelogging.path属性。但是这俩属性同时配置的时候,只有 logging.file 生效!

公众号

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

正文完
 0